图像的低频是轮廓,高频是噪声和细节 小波变换

参考:http://blog.csdn.net/charlene_bo/article/details/70877999

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

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

(2)什么是高频?

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

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


参考:http://blog.csdn.net/u011630458/article/details/50733268

图像低频高频区域分离

  1187人阅读  评论(0)  收藏  举报
  分类:

目录(?)[+]

简介

  本篇整理记录利用小波分离图像的高频、低频部分信息。

具体实现

  实现代码参考资料:小波变换 C++ opencv 实现

小波变换

  小波生成和参考资料中一致。小波变换中,首先抽取出原图像的每一行,进行小波分解,获得水平方向的高、低频信息。
接着抽取出原图像的每一列,进行小波分解,获得垂直方向的高、低频信息。
  生成的对应结果如下:
                                                                                
 
                   水平方向                                         垂直方向

区域分离

  如上,我们已经获得了水平、垂直方向的高、低频信息,并保存到了图像中。接着我们首先将这两幅图片都叠加到同一副图像中。
结果开运算、高斯滤波和阀值二值化之后,最终获得比较好的分离掩码结果。
  对应代码如下:
  
  
  1. void picDone(Mat mat1, Mat mat2){  
  2.     int i, j;  
  3.     IplImage tmp;  
  4.     CvScalar s;  
  5.     float sum = 0;  
  6.    
  7.     mat2.copyTo(mask);                                                                                                                 
  8.     tmp = mask;  
  9.     for(i=0; i< mat2.rows; i++){  
  10.         for(j=0; j< mat2.cols; j++){  
  11.             mask.at<float>(i,j) = (mat1.at<float>(i,j) + mat2.at<float>(i,j)) / 2;  
  12.             if((i==0) && (j==0)){  
  13.                 sum = mask.at<float>(i,j);    
  14.             }else{  
  15.                 sum = (sum + mask.at<float>(i,j)) / 2;  
  16.             }  
  17.         }     
  18.     }  
  19.     tmp = mat2;  
  20.     cvZero(&tmp);  
  21.    
  22.     imshow("mask0", mask);  
  23.     morphologyEx(mask, mat2, MORPH_CLOSE, Mat(5,5,CV_8U), Point(-1,-1), 1);  
  24.     GaussianBlur(mat2, mask, Size(7,7), 0, 0);  
  25.    
  26.     tmp = mask;  
  27.     for(i=0; i< mask.rows; i++){  
  28.         for(j=0; j< mask.cols; j++){  
  29.             s = cvGet2D(&tmp, i, j);  
  30.             if(s.val[0] < sum){  
  31.                 s.val[0] = 0;  
  32.                 cvSet2D(&tmp, i, j, s);  
  33.             }  
  34.         }  
  35.     }  
  36.     imshow("mask", mask);  
  37. }  
  对应的结果显示如下:
  

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI视觉网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值