fix(v5): average noisy copies from clean source

This commit is contained in:
2026-07-09 19:55:26 +08:00
parent da390b8bd9
commit 428b9a3e7f
2 changed files with 59 additions and 0 deletions

View File

@@ -233,6 +233,29 @@ class ApiTests(TestCase):
self.assertEqual(result.ndim, 2)
self.assertEqual(int(result[0, 0]), 96)
def test_average_noisy_copies_uses_clean_parent_after_gaussian_noise_state(self):
upload = self.client.post("/api/images/", {"image": grayscale_png_upload(value=96)}, format="multipart")
s0_id = upload.data["states"][0]["state_id"]
noisy = self.client.post(
f"/api/states/{s0_id}/operations/",
{"operation": "noise_filter", "params": {"kind": "gaussian", "mean": 0.2, "variance": 0}},
format="json",
)
noisy_image = load_image_array(ImageState.objects.get(id=noisy.data["state_id"]).image)
self.assertGreater(int(noisy_image[0, 0]), 96)
averaged = self.client.post(
f"/api/states/{noisy.data['state_id']}/operations/",
{"operation": "average_noisy_copies", "params": {"N": 10, "kind": "gaussian", "mean": 0, "variance": 0}},
format="json",
)
self.assertEqual(averaged.status_code, 201)
self.assertEqual(averaged.data["parent_state_id"], noisy.data["state_id"])
self.assertEqual(averaged.data["params"]["source_state_id"], s0_id)
result = load_image_array(ImageState.objects.get(id=averaged.data["state_id"]).image)
self.assertEqual(int(result[0, 0]), 96)
def test_periodic_noise_preserves_grayscale_and_zero_amplitude(self):
upload = self.client.post("/api/images/", {"image": grayscale_png_upload(value=96)}, format="multipart")
s0_id = upload.data["states"][0]["state_id"]