% clear; clc;
img=imread('c:/1.jpg');
img=im2bw(img,graythresh(img) );%二值化图像
se=strel('square',9);
img_1=imclose(img,se); %执行形态闭操作
img_2=imfill(img_1,'holes'); %图像填充处理
img_3=imerode(img_2,se); %腐蚀操作。
w=[-1 -1 -1;2 2 2;-1 -1 -1];
img_4=xor(img_2(:,:),img_3(:,:)); %腐蚀操作后,图像比原来图像要小,异或从而获得边缘
img_edge=bwmorph(img_4,'thin'); % 边缘细化
[l,num]=bwlabel(img_edge,8); %获取标注分量
[y_index,x_index]=find(l == 1);
x=mean(x_index); %计算圆心 y=mean(y_index);
figure; subplot(221); imshow(img); title('二值化后的图像');
subplot(222) imshow(img_1); title('close操作后的图像');
subplot(223) imshow(img_2); title('填充后的图像');
subplot(224); imshow(img_4); title('腐蚀处理后的图像');
figure;
imshow(img_edge); title('绘制出圆心的图像'); hold on; plot(x,y,'Marker','*','MarkerEdgeColor','w'); %绘制*,表示圆心位置
|