wulabahaaaaaaa 2023-06-06 22:44 采纳率: 50%
浏览 84
已结题

关于#matlab#的问题:要求测出上面图片中所有同心圆的半径

img


需要处理的原图片

img


要求测出上面图片中所有同心圆的半径。(能先确定圆心最好)
增加的:结果要以毫米为单位
这是处理出上面图片的代码


%-----------------------第一部分(读取)---------------------------------
%读取图片
A1=imread('51um.jpg');
figure,imshow(A1),title('原图像');
%真彩转灰度
A2=rgb2gray(A1);
figure,imshow(A2),title('灰度图');

%-----------------------第二部分(增强)---------------------------------
%直方图均衡化
B1=adapthisteq(A2); 
figure,imshow(B1),title('图像增强');

%-----------------------第三部分(降噪)---------------------------------
%均值滤波
C1= filter2(fspecial('average',7),B1)/255;%-
C2 = medfilt2(C1);                                  
%中值滤波部分
C3=medfilt2(C2,[7,7]);    %--
%低通滤波
[f1,f2] = freqspace(size(C3),'meshgrid'); %生成频率序列矩阵
Hd = ones(size(C3));   
r = sqrt(f1.^2 + f2.^2); 
Hd(r>0.5) = 0;   %构造滤波器
Y=fft2(double(C3));   
Y=fftshift(Y);   
Ya=Y.*Hd;   %滤波
Ya=ifftshift(Ya);   
C4=ifft2(Ya);
figure,imshow(C4),title('降噪');

%最大类间方差法分割图像
level=graythresh(C4);
E1=imbinarize(C4,level);             
disp(strcat('graythresh 计算灰度阈值1:',num2str(uint8(level*255))));
figure,imshow(E1),title('二值化');

%闭运算
se2=strel('disk',7);
F1=imclose(E1,se2);    

%细化
F2 = bwmorph(F1, 'thin', Inf);
figure,imshow(F2),title('ZS细化');
F3=bwmorph(F2,'spur',Inf);
F4=bwmorph(F3,'bridge');
figure,imshow(F4),title('细化后的修补');
F4=bwareaopen(F4,500);
figure,imshow(F4),title('消除无效目标');
  • 写回答

9条回答 默认 最新

  • 阳光宅男xxb 2023-06-13 08:04
    关注
    获得5.25元问题酬金

    要检测的圆的半径,首先需要确定圆的圆心。首先,将图像读入 MATLAB 中,然后,使用rgb2gray方法将图像转换为灰度图像,接着使用 MATLAB 中的函数 bwboundaries 来找到同心圆的边界,然后使用 regionprops 函数来计算每个边界的属性,包括面积、周长和中心。对于同心圆,我们需要找到中心和半径之间的关系。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 修改了问题 6月7日
  • 赞助了问题酬金15元 6月7日
  • 修改了问题 6月7日
  • 展开全部

悬赏问题

  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 串口发送数据和接收数据
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作
  • ¥15 做过TCL海信电视小米电视相关影视会员软件私我