From 81eb1db52dcbe896398c1f75c6618fbb8d4ccbf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 26 Jul 2025 17:50:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../colortitration/app/common/utils/ImageAnalysisUtil.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/iflytop/colortitration/app/common/utils/ImageAnalysisUtil.java b/src/main/java/com/iflytop/colortitration/app/common/utils/ImageAnalysisUtil.java index 409827a..0fbe303 100644 --- a/src/main/java/com/iflytop/colortitration/app/common/utils/ImageAnalysisUtil.java +++ b/src/main/java/com/iflytop/colortitration/app/common/utils/ImageAnalysisUtil.java @@ -14,14 +14,23 @@ import java.io.IOException; public class ImageAnalysisUtil { /** * RGB 空间最大距离 + * RGB 空间中任何两种颜色通道差值的最大欧氏距离。当两点颜色分别为 (0,0,0) 与 (255,255,255) 时,它们的距离正好是 √(255²+255²+255²)。我们用它来把“百分比容差”映射到一个绝对的色差阈值上。 + * 如果改用其他色彩空间(比如 HSV、Lab),需要重新计算该空间的最大距离;或者你想让“100% 容差”对应一个更小/更大的绝对阈值,也可以人为缩放这个值 */ private static final double MAX_DISTANCE = Math.sqrt(3 * 255 * 255); /** * 泡沫过滤:亮度与均值偏差倍数 + * 泡沫或小气泡通常会在亮度上产生异常(比周围亮很多或暗很多)。我们先计算区域内所有像素的亮度标准差(std),再只保留与平均亮度 mean 偏差不超过 1.5 × std 的像素做颜色平均。 + * 增大:放宽过滤范围,允许更多亮度波动的像素纳入平均,适合泡沫很大、亮度差异不明显的场景; + * 减小:更严格地剔除异常亮度点,适合噪声(泡沫)很小但又特别亮/暗的场景。 */ private static final double BUBBLE_STD_MULTIPLIER = 1.5; /** * 默认高斯平滑内核(3x3) + * 这是一个 3×3 的高斯(Gaussian)平滑卷积核,用来在计算色彩或差分前先模糊图像、抑制单点噪声。中心权重最大(4/16),周围逐渐减小,保证平滑而不失真。 + * 改变核尺寸:例如用 5×5 或 7×7 更强的模糊(需要同时调整数组长度和卷积大小); + * 调整权重分布:如果需要更均匀的模糊可把中心权重设低一些,周边加大;反之亦然。 + * 替换为其他滤波:如中值滤波、双边滤波等,也可以直接在此处接入。 */ private static final float[] GAUSS_KERNEL = { 1 / 16f, 2 / 16f, 1 / 16f,