提取图像的边界,用数字标记不同的目标边界
生活随笔
收集整理的這篇文章主要介紹了
提取图像的边界,用数字标记不同的目标边界
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<span style="font-size:18px;">I=imread('pillsetc.png');
imshow(I);
I=rgb2gray(I); %彩色圖像灰度化
threshold=graythresh(I); %設置灰度圖像的最佳閾值
bw=im2bw(I,threshold); %由閾值得到二值圖
figure;
imshow(bw);bw=bwareaopen(bw,30); %利用形態學開運算去除圖像中小于像素少于30個的目標figure;imshow(bw);se=strel('disk',2); %形成一個圓的算子bw=imclose(bw,se); %進行閉運算bw=imfill(bw,'holes'); %填充圖像中的空洞figure;imshow(bw);[B L]=bwboundaries(bw,'noholes'); %尋找圖像的邊界figure;imshow(label2rgb(L,@jet,[0.5 0.5 0.5])); %用彩色圖像顯示圖像的各個目標hold on%%for k=1:length(B)boudary=B{k};plot(boudary(:,2),boudary(:,1),'w','LineWidth',2)end %繪制圖像目標的邊界 Bc存儲的是邊界的坐標stats=regionprops(L,'Area','Centroid');threshold=0.94;for k=1:length(B)boudary=B{k};delta_sq=diff(boudary).^2; perimeter=sum(sqrt(sum(delta_sq,2))); %計算邊界圖像的周長area=stats.Area; %計算目標的面積metric=4*pi*area/perimeter^2;metric_string=sprintf('%2.2f',metric); %保存計算的結果if metric>thresholdcentroid=stats(k).Centroid;plot(centroid(1),centroid(2),'ko');end %找到各個目標的質心,text(boudary(1,2)-35,boudary(1,1)+13,metric_string,'Color','y','FontSize',14,'FontWeight','bold');end</span>
總結
以上是生活随笔為你收集整理的提取图像的边界,用数字标记不同的目标边界的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB 图像函数(第三章) 图像
- 下一篇: 一个简单的人脸检测