|
|
@ -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, |
|
|
|