You need to enable JavaScript to run this app. 如何使用Python检测图像中被像素化模糊处理的区域位置
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python检测图像中被像素化模糊处理的区域位置

图像模糊区域定位解决方案

你之前使用边缘检测方案无效,核心原因是单纯的边缘检测只能提取全局的边缘像素位置,无法对比不同区域的清晰程度差异,因此无法直接定位模糊块。以下是几种可直接落地的检测方案:

方法1:拉普拉斯方差检测(最适配你的测试场景)

核心原理是清晰区域的高频边缘信息丰富,拉普拉斯算子响应的方差更高;而均匀模糊区域的高频信息被抑制,拉普拉斯响应的方差会明显低于周围清晰区域。
参考实现代码:

import cv2
import numpy as np

# 读取你处理后的输出图像
img = cv2.imread("your_output_img.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算拉普拉斯响应
laplacian = cv2.Laplacian(gray, cv2.CV_64F, ksize=3)
# 滑动窗口计算局部方差,窗口大小建议和你使用的模糊核尺寸接近(你用了21的模糊核,此处设21即可)
window_size = 21
var_map = cv2.blur(laplacian**2, (window_size, window_size)) - (cv2.blur(laplacian, (window_size, window_size))) ** 2

# 自适应阈值取方差最低的10%区域作为模糊候选,也可根据实际效果调整百分位
threshold = np.percentile(var_map, 10)
binary_mask = (var_map < threshold).astype(np.uint8) * 255

# 形态学操作去噪,过滤孤立小噪点
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
binary_mask = cv2.morphologyEx(binary_mask, cv2.MORPH_CLOSE, kernel)
binary_mask = cv2.morphologyEx(binary_mask, cv2.MORPH_OPEN, kernel)

# 提取连通域定位模糊区域
contours, _ = cv2.findContours(binary_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
    # 过滤面积过小的误检区域
    if cv2.contourArea(cnt) < 100:
        continue
    # 矩形边界框输出
    x, y, w, h = cv2.boundingRect(cnt)
    print(f"模糊区域矩形边界:左上角({x},{y}),宽{w},高{h}")
    # 圆形拟合输出(适配你的测试场景)
    (cx, cy), radius = cv2.minEnclosingCircle(cnt)
    print(f"模糊区域圆形拟合:圆心({int(cx)},{int(cy)}),半径{int(radius)}")

针对你的测试案例,该方法基本可以100%还原你设置的圆心和半径参数。

方法2:梯度幅度检测(实现更简单)

核心逻辑和拉普拉斯方法类似,通过计算局部区域的梯度幅度均值判断清晰程度,模糊区域的梯度幅度会明显偏小:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算梯度幅度
sobel_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3)
grad_mag = np.sqrt(sobel_x ** 2 + sobel_y ** 2)
# 计算局部梯度均值
grad_map = cv2.blur(grad_mag, (21, 21))
# 后续二值化、形态学操作、连通域提取步骤和方法1完全一致

方法3:分块频域检测(适配复杂模糊场景)

如果后续需要检测像素化、高斯模糊、运动模糊等多种模糊类型,可以对图像做分块傅里叶变换,统计每个块的高频能量占比,占比低于阈值的即为模糊区域,鲁棒性更高。

调参注意事项

  • 滑动窗口大小建议设置为和模糊核大小相近或者略大,检测精度会更高
  • 阈值优先使用百分位自适应计算,不要用固定值,适配不同图像的亮度、对比度差异
  • 连通域提取时可根据实际场景调整面积过滤阈值,减少误检

内容的提问来源于stack exchange,提问作者EntropicFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 14:51:02