• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MatLab计算图像圆度 - 新一

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MatLab计算图像圆度

本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像)。

在Matlab2010a中可以实现。

附录效果图:

 

%颗粒圆度 clear;close all; %% %读取源图像 I = imread(\'999.png\'); figure;imshow(I); %% %灰度化、取反 h = rgb2gray(I); figure;imshow(h);%灰度图像 h = imcomplement(h);%取反 figure;imshow(h); %% %中值滤波、二值化 h = medfilt2(h,[4,4]); bw = im2bw(h,graythresh(h)); %% %消除噪点 se = strel(\'disk\',2); bw = imclose(bw,se); figure;imshow(bw); %% %填补闭合图形,填充色为白色 bw  = imfill(bw,\'holes\'); %% %边界寻找 [B,L] = bwboundaries(bw,\'noholes\'); % 为每个闭合图形设置颜色显示 figure;imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B)   boundary = B{k};   plot(boundary(:,2), boundary(:,1), \'w\', \'LineWidth\', 2) end %% %计算面积 stats = regionprops(L,\'Area\',\'Centroid\');

threshold = 0.94;

% 循环处理每个边界,length(B)是闭合图形的个数,即检测到的陶粒对象个数 for k = 1:length(B)

  % 获取边界坐标\'   boundary = B{k};

  % 计算周长   delta_sq = diff(boundary).^2;   perimeter = sum(sqrt(sum(delta_sq,2)));

  % 对标记为K的对象获取面积   area = stats(k).Area;

  % 圆度计算公式4*PI*A/P^2   metric = 4*pi*area/perimeter^2;

  % 结果显示   metric_string = sprintf(\'%2.2f\',metric);

  % 用一个黑色小圆圈标记圆度大于threshold = 0.94 的对象   if metric > threshold     centroid = stats(k).Centroid;     plot(centroid(1),centroid(2),\'ko\');   end %设置显示字体   text(boundary(1,2)-35,boundary(1,1)+13,metric_string,\'Color\',\'y\',...        \'FontSize\',14,\'FontWeight\',\'bold\');

end

title([\'圆度识别结果,越圆越接近1,\']);

 


 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
《数字图像处理原理与实践(MATLAB文本)》书代码Part7发布时间:2022-07-18
下一篇:
Matlab 二值图像label regions - 疯子123发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap