首先,我使用Octave。 我的目的是在此图像中找到下一个圆圈。我不知道,中心,我不知道半径。我想知道如何知道这些元素。 我发现了这个:
Circle detection from gray level image in MATLAB
A = imread('deformation_somb.jpg');
%// Some pre-processing. Treshold image and dilate it.
B = im2bw(A,.85);
se = strel('disk',3);
C = imdilate(B,se);
D = bwareaopen(C,10000);
%// Here imfill is not necessary but you might find it useful in other situations.
E = imfill(D,'holes');
%// Detect edges
F = edge(E);
%// circle_hough from the File Exchange.
%// This code is based on Andrey's answer here:
%http://dsp.stackexchange.com/questions/5930/find-circle-in-noisy-data.
%// Generate range of radii.
radii =10:5:pixel_x1;
h = hough_circle(F, radii,'same');
[~,maxIndex] = max(h(:));
[i,j,k] = ind2sub(size(h), maxIndex);
radius = radii(k);
center.x = j;
center.y = i;
%// Generate circle to overlay
N = 200;
theta=linspace(0,2*pi,N);
rho=ones(1,N)*radius;
%Cartesian coordinates
[X,Y] = pol2cart(theta,rho);
figure;
subplot(2,2,1)
imshow(B);
title('Thresholded image (B)','FontSize',16)
subplot(2,2,2)
imshow(E);
title('Filled image (E)','FontSize',16)
subplot(2,2,3)
imshow(F);hold on
plot(center.x-X,center.y-Y,'r-','linewidth',2);
title('Edge image + circle (F)','FontSize',16)
subplot(2,2,4)
imshow(A);hold on
plot(center.x-X,center.y-Y,'r-','linewidth',2);
title('Original image + circle (A)','FontSize',16)
我发现了hough_circle功能,但我没有工作。 我试着做下一个过程:
我做了:
bw = edge(im);
accum = hough_circle(bw, [0,scale of image/2])
之后,我不知道如何找到半径和中心...我有矩阵,但我不知道如何挑选我的价值观。所以我尝试了另一个显式方法,它遵循我的主题
中的上一个链接http://zupimages.net/up/16/47/yg3v.jpg
http://zupimages.net/up/16/47/8d6p.jpg
在前面的最佳代码链接中,我找到了下一个命令:strel 但是当我想启动这个函数时我有一个错误:在这个上下文中strel si作为类名无效....
有你的想法吗?
提前谢谢
于连