Matlab - problemas con un programilla de procesado de imagen

   
Vista:

problemas con un programilla de procesado de imagen

Publicado por Miquel (1 intervención) el 09/01/2014 19:31:46
hola cracks,
soy muy nuevo en esto de programar en matlab y realizando un pequeño ejercicio me encuentro en un punto en el que no se como avanzar.

os explico, me pasan 4 imagenes de diferentes carreteras y me piden que, mediante una deteccion de bordes, pinte las linias blancas que delimitan la carretera, asi como las linias discontinuas, con sendas linias rojas y que ademas pinte una 4ta linia verde en el centro del carril derecho.

yo he conseguido realizar la deteccion de bordes y la posterior dilatacion para resaltar los bordes, pero a partir de ahi no se como seguir, pues he intentado crear una matriz de tres capas y extraer la capa roja para multiplicar-la con la imagen erosionada y posteriormente multiplicar esta ultima con la original capa a capa pero no consigo resultados satisfactorios.

agradeceria vuestra ayuda.

adjunto codigo e imagenes.

function [current_line, img_out] = pdi_T3_ex_3(image_filname)

%cargamos la imagen
road = imread(image_filname);

%calculemos el tamanyo de la imagen
mides = size(road);
mida_y = mides(1);
mida_x = mides(2);
% disp(mides);

%pasamos la imagen a blanco y negro
road_bw = im2bw(road,0.85);

%realitzemos la deteccion de bordes
road_bw_edge = edge(road_bw, 'sobel', [],'vertical');

%creamos un elemento estructural
SE = strel('square', 16);

%aplicamos una dilatacion
road_dilate = imdilate(road_bw_edge, SE);

%realitzemos un crop
road_crop = imcrop(road_dilate, [0 mida_y/3 mida_x mida_y]);
% s = size(road_crop);
% disp(s);
% imshow(road_crop)

%declaremos una imagen en color y del mismo tamaño que la imagen original
matRGB = uint8(ones(mida_y, mida_x, 3));
R = matRGB(:,:,1);
G = matRGB(:,:,2);
B = matRGB(:,:,3);
RGB(:,:,1) = R;
RGB(:,:,2) = G;

% figure
% subplot(211)
% imshow(R)
% subplot(212)
% imshow(G)
% sizeRGB = size(matRGB);
% sizeR = size(R);
% sizeG = size(G);
% disp(sizeRGB);
% disp(sizeR);
% disp(sizeG);

figure
subplot(321)
imshow(road)
subplot(322)
imshow(road_bw)
subplot(323)
imshow(road_bw_edge)
subplot(324)
imshow(road_dilate)
subplot(325)
imshow(road_crop)






muchas gracias!
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