From 63a18627d3fc6e6cb54eef62c03d1551bb1afa8c Mon Sep 17 00:00:00 2001 From: Its-my-right Date: Tue, 15 Jul 2025 00:06:21 +0200 Subject: [PATCH] =?UTF-8?q?Also=20attenuate=20high=20frequencies=20at=2045?= =?UTF-8?q?=C2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CFA is sometimes orientated at 135°, sometimes at 45° so until we find if there is a law depending on the screen size, e-reader model or something, the best we can do is attenuate high frequencies on those two directions --- kindlecomicconverter/rainbow_artifacts_eraser.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kindlecomicconverter/rainbow_artifacts_eraser.py b/kindlecomicconverter/rainbow_artifacts_eraser.py index ee6d705..0814084 100644 --- a/kindlecomicconverter/rainbow_artifacts_eraser.py +++ b/kindlecomicconverter/rainbow_artifacts_eraser.py @@ -63,12 +63,16 @@ def attenuate_diagonal_frequencies(fft_spectrum, freq_threshold=0.30, target_ang # Calculation of complementary angle target_angle_2 = (target_angle + 180) % 360 + + # Calulation of perpendicular angles (CFA is sometimes orientated at 135°, sometimes at 45°) + target_angle_3 = (target_angle + 90) % 360 + target_angle_4 = (target_angle_3 + 180) % 360 # Create angular conditions in a vectorized way angle_condition = np.zeros_like(angles_deg, dtype=bool) # Process both angles simultaneously - for angle in [target_angle, target_angle_2]: + for angle in [target_angle, target_angle_2, target_angle_3, target_angle_4]: min_angle = (angle - angle_tolerance) % 360 max_angle = (angle + angle_tolerance) % 360