画像からの座標の読み取り

50 visualizaciones (últimos 30 días)
Chikako Kuriyama
Chikako Kuriyama el 26 de Jul. de 2017
Comentada: Chikako Kuriyama el 28 de Jul. de 2017
読み込んだ画像かからエッジを摘出し、その角の座標を取得したいのですが、エッジを摘出したあとにどうすれば良いのかわかりません。
  6 comentarios
Chikako Kuriyama
Chikako Kuriyama el 27 de Jul. de 2017
返信ありがとうございます。michioさんが添付していただいた図を最終的に得たいと考えています。
michio
michio el 28 de Jul. de 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!

Iniciar sesión para comentar.

Respuesta aceptada

Tohru Kikawada
Tohru Kikawada el 27 de Jul. de 2017
画像処理でやりたいことがある場合には Image Processing Toolbox の例 をまずは探されることをおすすめします。
たとえば、 こちら のサンプルを活用することでやりたいことが実現できるかと思います。
ご参考まで。
%%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');
  1 comentario
Chikako Kuriyama
Chikako Kuriyama el 28 de Jul. de 2017
本当にありがとうございます。参考にさせていただきます。何度もありがとうございました。

Iniciar sesión para comentar.

Más respuestas (2)

Takuji Fukumoto
Takuji Fukumoto el 26 de Jul. de 2017
エッジ検出が終わっているということで、2値化された画像をお持ちの状態かと思います。 regionprops関数を利用するとその画像のパラメータを取得することができます。
取得するパラメータは指定したプロパティで決定でき、 どのような画像かによりますが、'BoundingBox'や'Extrema'などが使えるかもしれません。

Chikako Kuriyama
Chikako Kuriyama el 27 de Jul. de 2017
ありがとうございます!早速試してみます。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!