同态滤波及图像去阴影
来源:互联网 发布:家道中落 知乎 编辑:程序博客网 时间:2024/05/16 17:44
图像照度不均匀,或者有阴影怎么进行二值化?相信长期做机器视觉的朋友都遇到过,下面分享我个人的一些经验,如果有更好的方法请不吝指出,共同进步。
1、图像亮度不均匀分析
一般情况下,图像f(x,y)是由光源产生的照度场i(x,y)和目标的反射系数场r(x,y)共同作用产生的,且前者可以表达成后二者的乘积,即:
f(x,y) = i(x,y) r(x,y)
r(x,y)反映的是目标表面颜色和纹理等特征,是我们最需要的信息。i(x,y)反映的是光源相对于目标的方位及强度分布。在机器视觉项目中,光源的布置及本身特性会造成对目标的照射不均匀。
2、同态滤波及去阴影
如果对f(x,y)做对数变换,可以将照度场i(x,y)与反射系数场r(x,y)分离开来,即
ln f(x,y) = ln i(x,y) + ln r(x,y)
再做傅里叶变换即
F{ln f(x,y)} = F{ln i(x,y)} + F{ln r(x,y)}
或者写为
G(u,v) = I(u,v) + R(u,v)
其中,G(u,v)、I(u,v)和R(u,v)分别是ln f(x,y)、ln i(x,y)和ln r(x,y)的傅里叶变换。
如果通过一个传递函数H(u,v)对G(u,v)进行处理,即
S(u,v) = H(u,v) G(u,v) = H(u,v)I(u,v) + H(u,v)R(u,v)
前面讲到,r(x,y)反映的是目标表面颜色和纹理等特征,可以看成是图像的高频成分,i(x,y)反映的是光源相对于目标的方位和强度分布,一般变化缓慢,可以看做图像的低频成分。如果H(u,v)选择合适的高通滤波器,由上面公式可以看出目标特征可以得到保持,而低频的照度不均会得到抑制。
对S(u,v)进行傅里叶反变换之后再做指数运算,即可得到原图像的同态滤波结果。
另外,在频域里对G(u,v)乘以H(u,v)等效于在空域里对ln f(x,y)以H(u,v)的傅里叶反变换为卷积核做卷积。下面的Matlab示例我们就采用这种方法。
3、Matlab示例
clear;close all;%加载原始图像img = imread('graph.bmp');figure, imshow(img);title('初始图像');%构造高通滤波器filter1 = fspecial('gaussian', [7 7], 0.6);filter2 = fspecial('gaussian', [7 7], 1.2);high_pass = filter1 - filter2;%利用对数变换将入射光和反射光部分分开log_img = log(1.0 + double(img));%将高斯高通滤波器与对数转换后的图像卷积high_log_part = imfilter(log_img, high_pass, 'symmetric', 'conv');%显示卷积后的图像figure, imshow(high_log_part);%幂变换回来high_part = exp(high_log_part) - 1.0;minv = min(min(high_part));maxv = max(max(high_part));%显示结果图像resultImg = (high_part - minv) / (maxv - minv);figure, imshow(resultImg);title('同态滤波结果');imwrite(resultImg, 'homoResult.bmp');如下图所示,左边为原图,右边为同态滤波后的结果,可以看出图像整体上亮度变得均匀了。但是图像高频部分也受到了一定的影响,这可以通过构造更合适的高通滤波器进行改善。
4、结语
同态滤波是改善图像照度不均的一种方法,以便于后续二值化等操作。但是对于照度不均匀或阴影图像还有另外一些自适应二值化的方法,我会在以后文章中跟大家分享。
- 同态滤波及图像去阴影
- 灰度图像--频域滤波 同态滤波
- 图像增强去雾之直方图均衡化/同态滤波/Retinex算法
- 图像增强——同态滤波
- MATLAB图像处理_同态滤波
- 图像增强之——同态滤波
- MATLAB图像处理_同态滤波
- 图像滤波及去噪初步
- 同态滤波
- 同态滤波
- 同态滤波
- 同态滤波
- 同态滤波
- 图像增强处理之:同态滤波与Retinex算法(一)同态滤波
- 同态滤波程序
- 同态滤波(Homomorphic filtering)
- 同态滤波 matlab 程序
- OpenCV同态滤波
- 推荐一个不错的bootstrap学习网站
- webview常用方法
- Android中的SharedPreferences陷阱 [转]
- 用红外遥控器遥控树莓派(XBMC)
- 调试opencv程序显示应用程序无法正常启动,0xc000007b
- 同态滤波及图像去阴影
- 快速排序
- 企业号、 公众号 、服务号 、订阅号区别(微信入门基础知识)
- php session 会话控制[转]
- webservice SOAP WSDL
- 在windows环境通过cygwin部署hadoop伪集群
- android *** Layout 06 RadioButton && ToggleButton && Switch
- Compiled XServer on Ubuntu System
- 基于树莓派的WIFI暴力破解工具