Problemes_Bloc2_VC PDF

Title Problemes_Bloc2_VC
Course Visió per Computador
Institution Universitat Autònoma de Barcelona
Pages 9
File Size 291.5 KB
File Type PDF
Total Downloads 117
Total Views 136

Summary

Download Problemes_Bloc2_VC PDF


Description

VC – Pau Acedo

Curs 2015 -2016

BLOC 2 Operadors de detecció de contorns  PREWITT Utilitza 2 kernels (Horitzontal i vertical) per a poder detectar contorns orientats verticalment i horitzontalment respectivament. Resalta els canvis d’intensitat.

Implementació Conv2(imatge, filtre_vertical, ‘same’) = Filtrar de cada component del operador Conv2(imatge, filtre_horitz, ‘same’) = Filtrar de cada component del operador Im2bin(im,t) = Establir Umbral t entre 0 i 1 Obtenir gradient complet de la imatge  SOBEL Més sensible a les cantonades diagonals que el prewitt. Implementació BW1 = edge(I,'sobel',’vertical’); BW2 = edge(I,'sobel',’horizontal’) BW_definitiva = edge(I,'sobel')  ROBERTS Molt sensible al soroll, per tant poc utilitzat per detecció peròobté bona resposta davant cantonades diagonals i en localització. L’implementació és Igual que prewitt, només s’han de canviar els kernels utilitzats.

 LAPLACIAN OF GAUSSIAN Útil per detectar contorns mitjançant la detecció de creuaments per zero de la imatge resultant. Implementació Edge (img, ‘log’,...)= Utilitza desviació estàndard

VC – Pau Acedo

Curs 2015 -2016 Im2bin(im,t) = Establir Umbral t entre 0 i 1

 CANNY Utilitza un filtre basat en la primera derivada d’un kernel Gaussià, que després permet discriminar els valors en que el gradient no és màxim local (s’aconsegueixen millors resultats que LoG o només utilitzant Sobel, Prewitt o Roberts). Implementació -Obtenció del gradient -Suavització imatge -Calcular kernel gaussià -Supressió no màxima al resultat del gradient -Obtenir contorns de 1 píxel de grossor -Histèresis d’umbral a la supressió no màxima -Eliminar màxims procedents de soroll -Tancament dels contorns oberts

VC – Pau Acedo

Curs 2015 -2016

TEMA 5 - Transformacions Geomètriques 5. 1 Implementa la rotació input-output i output-input. L'entrada és la imatge a transformar i el valor del angle que volem rotar. El resultat deu tenir la mida necessària per no perdre cap part de la imatge. Aplica aquestes transformacions a la imatge que vulguis de mida 320 x 200. Junta el resultat en una mateixa imatge i desa-la en format png (im5). alpha=20*pi/180; % Rotación in-> out % en comptes de bucles faig servir operacions amb vectors: més compacte, més ràpid, més memòria, més complicat [x y]=meshgrid(1:size(im,2),1:size(im,1)); % x-> j, y->i xp=x*cos(alpha)-y*sin(alpha); yp=x*sin(alpha)+y*cos(alpha); xplim=[floor(min(xp(:))), ceil(max(xp(:)))]; yplim=[floor(min(yp(:))), ceil(max(yp(:)))]; imRInOut=uint8(zeros(yplim(2)-yplim(1)+1,xplim(2)-xplim(1)+1)); imRInOut(sub2ind(size(imRInOut),round(yp-yplim(1)+1),round(xpxplim(1)+1)))=im(sub2ind(size(im),y,x)); % Rotación out -> in % amb bucles lim=[1, size(im,2), 1 ,size(im,2); 1, 1, size(im,1) ,size(im,1) ]; plim=[cos(alpha) -sin(alpha); sin(alpha) cos(alpha)]*lim; xplim=[floor(min(plim(1,:))), ceil(max(plim(1,:)))]; yplim=[floor(min(plim(2,:))), ceil(max(plim(2,:)))]; imROutIn=uint8(zeros(yplim(2)-yplim(1)+1,xplim(2)-xplim(1)+1)); beta=-alpha; for i=1:size(imROutIn,1) for j=1:size(imROutIn,2) xp=j+xplim(1)+1; yp=i+yplim(1)+1; x=round(xp*cos(beta)-yp*sin(beta)); y=round(xp*sin(beta)+yp*cos(beta)); if(x > 0 && x 0 && y 1000).*R); [row,col]=find(p); val=R(sub2ind(size(R),row,col)); %busquem els N m�s grans N=10000; N=min(N,length(val)) [valsort,ind]=sort(val,1,'descend'); plot(col(ind(1:N)),row(ind(1:N)),plotColor{j},'MarkerSize',2*sig); drawnow pause end end 6.3 Agafa alguna imatge que tingui contingut de línies rectes i aplica diferents detector de contorns (edge). Amb el detector de Canny busca quins paràmetres treuen més bé les línies de la imatge amb la que estàs treballant. img=rgb2gray(im); figure, imshow(edge(img,'sobel')); title('sobel') figure, imshow(edge(img,'prewitt')); title('prewitt') figure, imshow(edge(img,'roberts')); title('roberts') figure, imshow(edge(img,'log')); title('log') figure, imshow(edge(img,'zerocross')); title('zerocross') figure, imshow(edge(img,'canny')); title('canny') for sig=1:10 imshow(edge(img,'canny',[],sig)); title(sprintf('canny sigma=%f',sig)) pause end 6.4 Implementa la transformada de Hough per a línies. Estableix la dimensió de l'espai de votació (espai de paràmetres) que estimis oportuna. Per a la imatge anterior busca les línies rectes (limita la cerca a un nombre que puguis controlar, de major votació cap a baix). Mostra l'espai de votacions. Marca les deteccions dels màxims dins aquest espai. Dibuixa a sobre de la imatge de contorns i a sobre de la imatge original la detecció de línies rectes obtinguda amb la teva transformada de Hough. img=rgb2gray(im(1:4:end,1:4:end,:)); con=edge(img,'canny',[],6); [x,y]=find(con); % % %

VC – Pau Acedo

Curs 2015 -2016

% Hough % % %

TEMA 8 – Segmentació 8.1 Implementa l'algorisme d'Otsu per imatges bimodals. Mostra en una grà_ca el comportament de la variància intraclasse per diferents imatges, estudia la forma de l'histograma i d'aquesta variància. r=im(:,:,1); imshow(r) disp('llindars calculats amb matlab'); t=graythresh(r); tg=t*255; fprintf('t([0,1]) = %f t([0,225]) = %d\n',t,tg); h=imhist(r); W=sum(h(:)); x=(0:255)'; for i=1:length(h)-1 b=h(1:i); xb=x(1:i); f=h(i+1:end); xf=x(i+1:end); Wb=sum(b)/W; Wf=sum(f)/W; mb=sum(b.*xb)/sum(b); mf=sum(f.*xf)/sum(f); vb=sum(b.*(xb-mb).^2)/sum(b); vf=sum(f.*(xf-mf).^2)/sum(f); win(i)=Wb*vb+Wf*vf; end figure, plot(win); [~,oc]=min(win); tgc=oc-1; disp('llindar calculat'); fprintf('tgc([0,225]) = %d\n',tgc); figure, imshow(r>tgc); 8.2 Implementa el criteri de Niblack per fer una binarització local. Pots ometre el terme de la desviació estàndard i afegir una constant per treure el soroll que surt quan s'aplica directament. % Tniblack = m + k * s, on m �s mitjana local (finestra rectangular amb % mida ajustable), k es pot moure tamb� fins a trobar un valor adient, % s �s la desviaci� est�ndard local a la mateixa finestra.

8.4 Implementa l'algorisme de K-means i aplica'l per a segmentar la imatges de Lego. close all, clear all im=imread('http://www.cvc.uab.es/shared/teach/a102784/doc/images/lego. jpg'); figure, imshow(im)

VC – Pau Acedo K=7; rgb=double(reshape(im,size(im,1)*size(im,2),3)); %rgb=double(reshape(rgb2hsv(im),size(im,1)*size(im,2),3)); % inicialitzaci� dels K centres % bucle fins a converg�ncia % assignaci� de dades a centres % rec�lcul dels centres

Curs 2015 -2016...


Similar Free PDFs