数学形态学处理的基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状,以达到对图像分析和识别的目的。数学形态学的应用大大简化图像数据,保持它们基本的形状特征,并除去不相干的结构,提高了图像分析处理速度。 形态学处理采用三原色RGB通道线性组合模型 rgb' = aR+bG+cB,得到凸显焊缝目标二维图像,对该图像进行二值化操作,通过剔除小块和标记块中心得到二值化图像,通过填充、膨胀和腐蚀操作优化二值化图像,可以很大程度的抑制噪声并保留细节部分检测出真正的边缘,算法简单,结构元选取灵活。
- %% 颜色特征提取
- clc,clear,close all % 清屏、清工作区、关闭窗口
- warning off % 消除警告
- feature jit off % 加速代码执行
- I=imread('1.jpg');
- r=I(:,:,1);
- g=I(:,:,2);
- b=I(:,:,3);
- HF1=b-g*0.0-r*0.70;
- % imshow(HF1)
- HF2=HF1 > 55; % 二值化操作
- % imshow(HF2)
- % colormap(gray);
- HF2=bwareaopen(HF2,1000); % 剔除面积小于1000的二值化块
- % figure(1),imagesc(HF2)
- cc=bwconncomp(HF2); % 连通域计算
- s = regionprops(HF2, {'centroid','area'}); % 计算二值化块中心
- HF2(labelmatrix(cc)~=2)=0; % 标记
- HF2=imfill(HF2,'holes'); % 填充空洞
- se=strel('disk',5); % 圆盘算子
- HF2=imdilate(HF2,se); % dilate膨胀
- HF2=imerode(HF2,se); % erode腐蚀
- % imshow(HF2)
- %%
- r1=immultiply(r,HF2); % 交运算
- g1=immultiply(g,HF2); % 交运算
- b1=immultiply(b,HF2); % 交运算
- HF3=cat(3,r1,g1,b1); % 融合为RGB图像
- %% 显示
- subplot(131),imshow(I);title('original pic')
- subplot(132),imshow(HF2);title('bw pic')
- subplot(133),imshow(HF3);axis tight
- title('morphological edge detection')
- set(gca,'xtick',[]);set(gca,'ytick',[]);
复制代码
|