消除图像处理中的光照不均(matlab版)
来源:互联网 发布:斯林百兰 雅兰 知乎 编辑:程序博客网 时间:2024/04/29 10:39
步骤
1.进行最大(最小)值滤波初步得到光照图
2.进行均值(或高斯)滤波得到最终的光照分布图
3.原始图像减去光照图,得到前景目标
一个栗子
拿matlab中自带的rice.png图举例。我们希望能够把大米和背景区分开来,直观的做法是用阈值分割来做成二值图,再对联通区域进行标记,这样就能知道每个大米的大小和中心位置。
可是仔细观察大米图会发现摄像时光照不均匀,这样就很难用一个全局阈值去进行分割,如果直接分割的话会导致一部分背景被识别为目标(阈值偏小)或者丢失部分目标(阈值偏大)。如果把光照的不均匀去掉,再做二值化的结果如何呢?
代码
function newIm= DUCO_RemoveBackGround(im,w,isShow)%im:原始图像;w 滤波窗体大小;isShow 是否显示中间过程%%if isShow==1 figure imshow(im,[])endbk=double(im);%1.最小值滤波bk=ordfilt2(bk,1,ones(w,w),'symmetric');if isShow==1 figure subplot(2,2,1) imshow(bk,[]),title('最小值滤波之后的结果'); %显示滤波后的图象end%2.均值滤波h=ones(w,w)/(w*w);bk=imfilter(bk,h,'replicate');if isShow==1 subplot(2,2,2) imshow(bk,[]),title('均值滤波之后的结果'); %显示滤波后的图象end%3.减掉亮度不均的结果newIm=imsubtract(double(im),bk);if isShow==1 subplot(2,2,3) imshow(newIm,[]);title('去背景图');end%4.二值化分割出目标th=graythresh(newIm/255);newIm=im2bw(newIm/255,th);if isShow==1 subplot(2,2,4) imshow(newIm),title('二值化的结果'); %显示滤波后的图象endend
结果
其实右上的图就是背景的光照分布。最后的二值图中还是存在一些白色的噪声点,可以在小窗体范围内,做一个最小值滤波再做一个最大值滤波,这样既消除了噪声又保证目标的边缘不会被破坏。
0 0
- 消除图像处理中的光照不均(matlab版)
- MATLAB中的光照处理
- 图像处理中的matlab使用
- 【OpenCV学习笔记】之五 RGB图像归一化处理函数,消除线性变化的光照影响
- matlab图像光照效果模拟
- 图像处理-光照规整开篇
- 图像处理-光照规整-Gradientfaces
- 光照不均去背景方法尝试
- MATLAB图像处理-霍夫变换检测图像中的线段
- 图像处理-光照规整-直方图均衡化
- 图像处理-光照规整-Gamma校正
- 图像处理-光照规整-Gamma校正
- 【Android图像处理】光照滤镜(效果)
- OpenCV对图像的光照归一化处理
- 【图像处理】MATLAB:图像噪声
- 【图像处理】MATLAB:图像压缩
- 【图像处理】MATLAB:图像分割
- MATLAB图像处理命令
- 双 11 技术攻略:企业云架构的正确姿势
- 15分钟搭建一个简单的Java缓存系统
- (四)Spring详解——Bean关系(DI)
- Borg Maze(prime+bfs)
- Pie
- 消除图像处理中的光照不均(matlab版)
- can't install opengles on ubuntu 12.04
- 文章标题
- Note on a harvard course
- ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
- python的内建函数built-in functions
- 太阳神
- 为什么覆写equals的时候一定要覆写hashCode?
- 【Github】Windows下添加到远程仓库