第九章 形态学图像处理
来源:互联网 发布:淘宝1秒拦截软件有哪些 编辑:程序博客网 时间:2024/05/31 20:52
- 形态学图像处理
- 预备知识
- 二值图像集合和逻辑运算符
- 膨胀和腐蚀
- 膨胀
- 结构元素的分解
- 腐蚀
- 膨胀与腐蚀的组合
- 击中或击不中变换
- 使用查找表
- 预备知识
形态学图像处理
预备知识
二值图像,集合和逻辑运算符
与数学中的逻辑运算基本相同
f = imread('Fig4.41(a).jpg');g = imread('FigProb4.09(left).jpg');subplot(231),imshow(f),title('A');subplot(232),imshow(g),title('B');subplot(233),imshow(~f),title('A的补集');subplot(234),imshow(f|g),title('AB的合集');subplot(235),imshow(f&g),title('AB的并集');subplot(236),imshow(f&~g),title('AB的差集');
膨胀和腐蚀
膨胀
在二值图像中“加长”或“变粗”的操作。膨胀定义为集合运算,A被B膨胀记为
原理:
A = imread('Fig9.05(a).jpg');A = ~A;B = [1 1 1;1 1 1;1 1 1];A2 = imdilate(A,B);subplot(121),imshow(A),title('原图');subplot(122),imshow(A2),title('膨胀后');
结构元素的分解
se = strel('diamond', 5)decomp = getsequence(se);
腐蚀
做与,或操作,结果是使原来的二值图像减小一圈
A = imread('Fig01.png');se = strel('disk',10);A2 = imerode(A,se);subplot(221),imshow(A),title('原图');subplot(222),imshow(A2),title('半径为10腐蚀');se = strel('disk',5);A3 = imerode(A,se);subplot(223),imshow(A2),title('半径为5腐蚀');A4 = imerode(A,strel('disk',20));subplot(224),imshow(A2),title('半径为20腐蚀');
膨胀与腐蚀的组合
开:先腐蚀再膨胀,可以去掉目标外的孤立点
闭:先膨胀再腐蚀,可以去掉目标内的孔。
开运算与闭运算
开运算:C = imopen(A,B)
闭运算:C = imclose(A,B)f = imread('Fig02.png');se = strel('square',20);fo = imopen(f,se);subplot(221),imshow(f),title('原图');subplot(222),imshow(fo),title('b开运算');fc = imclose(f,se);subplot(223),imshow(fc),title('c闭运算');foc = imclose(fo,se);subplot(224),imshow(foc),title('b的闭运算')
击中或击不中变换
击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。在研究图像中的目标物体与图像背景之间的关系上,HMT能够取得很好的效果。所以常被用于解决目标图像识别和模式识别等领域。
f = imread(‘Fig11.10.jpg’);
B1 = strel([0 0 0;0 1 1;0 1 0]);
B2 = strel([1 1 1;1 0 0;1 0 1]);
g = bwhitmiss(f,B1,B2);
subplot(121);imshow(f),title(‘原图’);
subplot(122);imshow(g),title(‘击中击不中变换’);
使用查找表
当击中击不中结构元素较小时,计算击中击不中变换的较快方法是使用查找表(LUT).
函数:endpoints
函数:bwmorphf = imread(‘Fig11.10.jpg’);
g = bwmorph(f, ‘skel’, Inf);
for k = 1:20
g = g & ~endpoints(g);
end
subplot(121);imshow(f);
subplot(122);imshow(g);
f = imread(‘Fig12.09(a).jpg’);
[L,n] = bwlabel(f);
[r,c] = find(L == 3);
rbar = mean(r);
cbar = mean(c);
imshow(f);
hold on
for k = 1:n
[r,c] = find(L == k);
rbar = mean(r);
cbar = mean(c);
plot(cbar,rbar,’Marker’,’o’,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’k’,’MarkerSize’,10);
plot(cbar,rbar,’Marker’,’*’,’MarkerEdgeColor’,’w’);
end
- 第九章 形态学图像处理
- 第九章 形态学图像处理
- 第九章(1至3节)形态学图像处理
- 【Matlab数字图像处理】第九章:形态学
- 形态学图像处理
- 形态学图像处理
- 形态学图像处理
- 形态学图像处理
- 图像的形态学处理
- 形态学的图像处理
- openCV 形态学图像处理
- 图像处理之形态学
- 形态学图像处理
- 图像的形态学处理
- 形态学图像处理
- 一、图像处理--形态学
- 形态学图像处理
- 形态学图像处理
- 1、用Anaconda配置Windows环境下的tensorflow(CPU版本)
- 一些JQ用法
- js面向对象---拖拽
- ble 4.0后台运行介绍
- 【POI2001】【HDU1814】和平委员会
- 第九章 形态学图像处理
- 设计者模式
- spark 之 spark是什么?
- Object类wait,notify,notifyAll的使用
- Ext.js 组件的简单应用——【Window】和【HtmlEditor】结合使用
- 算法导论桶排序
- 网站兼容 360的IE8兼容模式处理方式
- 2017-6-30(sql查询)
- 构建工具演化:ant/maven/gradle