为什么说图像的低频是轮廓,高频是噪声和细节

图像的频率:灰度值变化剧烈程度的指标,是灰度在平面空间上的梯度。

(1)什么是低频?
      低频就是颜色缓慢地变化,也就是灰度缓慢地变化,就代表着那是连续渐变的一块区域,这部分就是低频. 对于一幅图像来说,除去高频的就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。

(2)什么是高频?

     反过来, 高频就是频率变化快.图像中什么时候灰度变化快?就是相邻区域之间灰度相差很大,这就是变化得快.图像中,一个影像与背景的边缘部位,通常会有明显的差别,也就是说变化那条边线那里,灰度变化很快,也即是变化频率高的部位.因此,图像边缘的灰度值变化快,就对应着频率高,即高频显示图像边缘。图像的细节处也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节。
      另外噪声(即噪点)也是这样,在一个像素所在的位置,之所以是噪点,就是因为它与正常的点颜色不一样了,也就是说该像素点灰度值明显不一样了,,也就是灰度有快速地变化了,所以是高频部分,因此有噪声在高频这么一说。

      其实归根到底,是因为我们人眼识别物体就是这样的.假如你穿一个红衣服在红色背景布前拍照,你能很好地识别么?不能,因为衣服与背景融为一体了,没有变化,所以看不出来,除非有灯光从某解度照在人物身上,这样边缘处会出现高亮和阴影,这样我们就能看到一些轮廓线,这些线就是颜色(即灰度)很不一样的地方.

  • 79
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
下面是一个示例代码,其使用了 OpenCV 和 PyWavelets 库,实现了对图像进行小波变换、形态学操作、值滤波和逆变换: ```python import cv2 import numpy as np import pywt def morphology_process(img): # 构造四个方向的元素形状 kernel_0 = np.array([[0, 0, 0], [1, 1, 1], [0, 0, 0]], dtype=np.uint8) kernel_45 = np.array([[0, 0, 1], [0, 1, 0], [1, 0, 0]], dtype=np.uint8) kernel_90 = np.array([[0, 1, 0], [0, 1, 0], [0, 1, 0]], dtype=np.uint8) kernel_135 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.uint8) # 对低频部分进行灰度闭运算操作 cA_morph = cv2.morphologyEx(cA, cv2.MORPH_CLOSE, kernel_0) cA_morph = cv2.morphologyEx(cA_morph, cv2.MORPH_CLOSE, kernel_45) cA_morph = cv2.morphologyEx(cA_morph, cv2.MORPH_CLOSE, kernel_90) cA_morph = cv2.morphologyEx(cA_morph, cv2.MORPH_CLOSE, kernel_135) return cA_morph # 读取图像并进行小波变换 img = cv2.imread('lena.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) coeffs = pywt.dwt2(gray, 'haar') cA, (cH, cV, cD) = coeffs # 对低频部分进行形态学操作 cA_morph = morphology_process(cA) # 对高频部分进行值滤波去噪 cH = cv2.medianBlur(cH, 5) cV = cv2.medianBlur(cV, 5) cD = cv2.medianBlur(cD, 5) # 重构图像 coeffs = cA_morph, (cH, cV, cD) reconstructed_img = pywt.idwt2(coeffs, 'haar') # 显示低频高频部分 cv2.imshow('Low Frequencies', cA_morph.astype(np.uint8)) cv2.imshow('High Frequencies', cv2.merge([cH, cV, cD]).astype(np.uint8)) cv2.waitKey(0) # 显示重构后的图像 reconstructed_img = reconstructed_img.astype(np.uint8) cv2.imshow('Reconstructed Image', reconstructed_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 代码首先读取了一张彩色图像并将其转换为灰度图像,然后使用 pywt.dwt2() 函数进行小波变换,得到低频部分 cA 和高频部分 cH、cV、cD 四个系数。 为了去除低频部分的划痕,我们先使用形态学闭运算对 cA 系数进行处理,将四个方向的元素形状进行叠加。然后使用 OpenCV 的 medianBlur() 函数对高频部分进行值滤波去噪。 最后,将处理后的系数 cA_morph、cH、cV、cD 组合起来,使用 pywt.idwt2() 函数进行逆变换,得到重构后的图像。我们还可以使用 OpenCV 的 imshow() 函数显示低频高频部分和重构后的图像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值