画像からの座標の読み取り
50 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Chikako Kuriyama
il 26 Lug 2017
Commentato: Chikako Kuriyama
il 28 Lug 2017
読み込んだ画像かからエッジを摘出し、その角の座標を取得したいのですが、エッジを摘出したあとにどうすれば良いのかわかりません。
6 Commenti
michio
il 28 Lug 2017
Image Analyst san, thanks for your offer :) If we see some hard-core image processing issues next time, I'll reach out to you!
Risposta accettata
Tohru Kikawada
il 27 Lug 2017
ご参考まで。
%%Detect Lines in Images Using Hough
% This example shows how to detect lines in an image using the |hough| function.
%%Read an image into the workspace and binarize it
I = imread('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/83898/%3F.png');
BW = imbinarize(rgb2gray(I));
BW = imclearborder(BW);
%%Compute the Hough transform of the binary image returned by |edge|.
[H,theta,rho] = hough(BW);
%%Display the transform, |H|, returned by the |hough| function.
figure
imshow(imadjust(mat2gray(H)),[],...
'XData',theta,...
'YData',rho,...
'InitialMagnification','fit');
xlabel('\theta (degrees)')
ylabel('\rho')
axis on
axis normal
hold on
colormap(gca,hot)
%%Find the peaks in the Hough transform matrix, |H|, using the |houghpeaks|
% function.
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
%%Superimpose a plot on the image of the transform that identifies the peaks.
x = theta(P(:,2));
y = rho(P(:,1));
plot(x,y,'s','color','black');
%%Find lines in the image using the |houghlines| function.
lines = houghlines(BW,theta,rho,P,'FillGap',30,'MinLength',50);
%%Create a plot that displays the original image with the lines superimposed
figure, imshow(I), hold on
max_len = 0;
len = zeros(length(lines),1);
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',1,'Color','green');
% Presave line length
len(k) = norm(lines(k).point1 - lines(k).point2);
end
%%Connect lines
theta = [lines.theta];
theta(theta>0) = -Inf;
[~,min_angle] = max(theta);
theta = [lines.theta];
theta(theta<0) = Inf;
[~,max_angle] = min(theta);
pts = [lines(min_angle).point1; lines(min_angle).point2; lines(max_angle).point2;...
lines(max_angle).point1; lines(min_angle).point1];
plot(pts(:,1),pts(:,2),'LineWidth',2,'Color','red');
Più risposte (2)
Takuji Fukumoto
il 26 Lug 2017
エッジ検出が終わっているということで、2値化された画像をお持ちの状態かと思います。 regionprops関数を利用するとその画像のパラメータを取得することができます。
取得するパラメータは指定したプロパティで決定でき、 どのような画像かによりますが、'BoundingBox'や'Extrema'などが使えるかもしれません。
0 Commenti
Vedere anche
Categorie
Scopri di più su イメージ変換 in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!