Matlab - Como medir distancia entre 2 puntos en una imagen?

 
Vista:
sin imagen de perfil

Como medir distancia entre 2 puntos en una imagen?

Publicado por joaquin (2 intervenciones) el 21/11/2013 17:56:42
Chicos, mi duda es la del título, necesito medir la distancia en CENTÍMETROS de la barra que esta a la izquierda de esta imagen(don 3 una amarilla y 2 verdes, la 3 tienen el mismo tamaño asi que la medicion de cualquier me sirve)

http://imageshack.com/i/mvbblop


utilice solo la parte necesaria, trannsforme a nivel de gris, blanco y negro entre otras cosas tambien aplique la trnasformada de hough, si esta utima me llegase a servir, como OBTENGO y luego UTILIZO los datos? por favor ayudenme desde ya muchas gracias

X=imread('Cosas.png');
rect_I = [69 130 137 338];
RGB= imcrop(X,rect_I);
grises=rgb2gray(RGB);
%% Obtener el fondo de la imagen
background=imclose(grises,strel('disk',0));
figure, imshow(background)
%% Binarizar imagen
lavel=graythresh(background);
intensidad=lavel*255
BW=im2bw(background,lavel);
figure, imshow(BW)
%%aplicar un imopen
se=strel('disk',3);
open1=imopen(BW,se);
figure, imshow(open1)
%% Eliminar todos las areas menores de 40 pixels
J = bwareaopen(~open1,300);
figure,imshow(J)

%% preprocesamiento con transformada de HOUGH

[H,T,R]=hough(J);
peaks=houghpeaks(H,5);
lines=houghlines(J,T,R,peaks);

hold on
max_len=0;
max_len=0;

for k=1:length(lines)
xy=[lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
%% dibuja el principo y el final de cada segmento
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

%% Dibujar el segmento
len=norm(lines(k).point1 - lines(k).point2);
if( len > max_len)
max_len = len;
xy_long = xy;
end
end
imtool(lines);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como medir distancia entre 2 puntos en una imagen?

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 22/11/2013 07:05:41
La distancia entre dos puntos opuestos de la recta que muestra la imagen se puede hallar con tu código, el detalle es que distancia no es distancia real de los objetos. Estuve probando con imágenes de objetos que yo sabia sus distancia como por ejemplo las monedas de mi país y hay diferencia.

Pero encontré mas códigos con respecto a tu pregutna.
estúdialo
digita en la ventana de comandos

1
>> help imdistline



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
%Example 1
 
 
%Insert a Distance tool into an image. Use makeConstrainToRectFcn to specify a drag constraint
 %function that prevents the Distance tool from being dragged outside the extent of the image.
 %Right-click the Distance tool and explore the context menu options.
figure, imshow('pout.tif');
h = imdistline(gca);
api = iptgetapi(h);
fcn = makeConstrainToRectFcn('imline',...
                              get(gca,'XLim'),get(gca,'YLim'));
api.setDragConstraintFcn(fcn);
 
%Example 2
 
 
%Position endpoints of the Distance tool at the specified locations.
close all, imshow('pout.tif');
h = imdistline(gca,[10 100],[10 100]);
 
 
%Delete the Distance tool.
%api = iptgetapi(h);
%api.delete();
 
%Example 3
 
 
%Use the Distance tool with XData and YData of associated image in non-pixel units. This example %%requires the boston.tif image from the Mapping Toolbox software, which includes material 
%copyrighted by GeoEye™, all rights reserved.
start_row = 1478;
end_row = 2246;
meters_per_pixel = 1;
rows = [start_row meters_per_pixel end_row];
start_col = 349;
end_col = 1117;
cols = [start_col meters_per_pixel end_col];
img  = imread('boston.tif','PixelRegion',{rows,cols});
figure;
hImg = imshow(img);
title('1 meter per pixel');
 
% Specify initial position of distance tool on Harvard Bridge.
hline = imdistline(gca,[271 471],[108 650]);
api = iptgetapi(hline);
api.setLabelTextFormatter('%02.0f meters');
 
% Repeat process but work with a 2 meter per pixel sampled image. Verify
% that the same distance is obtained.
meters_per_pixel = 2;
rows = [start_row meters_per_pixel end_row];
cols = [start_col meters_per_pixel end_col];
img  = imread('boston.tif','PixelRegion',{rows,cols});
figure;
hImg = imshow(img);
title('2 meters per pixel');
 
% Convert XData and YData to meters using conversion factor.
XDataInMeters = get(hImg,'XData')*meters_per_pixel;
YDataInMeters = get(hImg,'YData')*meters_per_pixel;
 
% Set XData and YData of image to reflect desired units.    
set(hImg,'XData',XDataInMeters,'YData',YDataInMeters);
set(gca,'XLim',XDataInMeters,'YLim',YDataInMeters);
 
% Specify initial position of distance tool on Harvard Bridge.
hline = imdistline(gca,[271 471],[108 650]);
api = iptgetapi(hline);
api.setLabelTextFormatter('%02.0f meters');   
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como medir distancia entre 2 puntos en una imagen?

Publicado por Gustvo barron (1 intervención) el 01/04/2014 20:09:22
Debes medir la distancia en pixeles de un objeto que conozcas para después sacar una relación de cuanto vale un pixel el milimetros, recuerda que la distancia del objeto a la cámara debe de ser fija ya que si existe variación cambia la relacion, ya que no es proporcional, para hacerlo movil se debe hacer una tringulcion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar