[ Pobierz całość w formacie PDF ]
Wczytanie obrazków do matlaba
A = imread('1.jpg'); imshow(A);
B = imread('2.jpg'); imshow(B);
C = imread('3.jpg'); imshow(C); Zamiana na odcienie szarości
Ag=rgb2gray(A); imshow(Ag);
Bg=rgb2gray(B); imshow(Bg);
Cg=rgb2gray(c); imshow(Cg);
Wartości i współrzędne pikseli o największej i najmniejszej wartości intensywności
Ma = max(max(Ag); // 255; for i=1:size(Ag,1) for j=1:size(Ag,2) if(Ag(i,j)==Ma) disp(sprintf('%d, %d', i,j)); end end end
603, 708 735, 667 1023, 680 1036, 630 1040, 720 1570, 63 1571, 49 1571, 50 1571, 63 1571, 332 1571, 352
Mina = min(min(Ag)); //0
for i=1:size(Ag,1) for j=1:size(Ag,2) if(Ag(i,j)==Mina) disp(sprintf('%d, %d', i,j)); end end end
505, 633 587, 589 673, 506 722, 620 731, 529 745, 608 758, 208 828, 170 853, 1213 869, 1194…
Mb = max(max(Bg));
for i=1:size(Bg,1) for j=1:size(Bg,2) if(Bg(i,j)==Mb) disp(sprintf('%d, %d', i,j)); end end end
97, 654 239, 752 250, 795 264, 686 267, 784 325, 772 405, 402 421, 375 440, 329 441, 778 445, 141 450, 383 457, 478…
Minb = min(min(Bg)); // 1
for i=1:size(Bg,1) for j=1:size(Bg,2) if(Bg(i,j)==Minb) disp(sprintf('%d, %d', i,j)); end end end
949, 509
Mc=max(max(Cg)); //255
for i=1:size(Cg,1) for j=1:size(Cg,2) if(Cg(i,j)==Mc) disp(sprintf('%d, %d', i,j)); end end end
1569, 50 1570, 46 1570, 49 1570, 50 1570, 284 1570, 302 1570, 323 1570, 324 1570, 328 1570, 330 1570, 331 1570, 332 1571, 46… Minc = min(min(Cg)); //0
for i=1:size(Cg,1) for j=1:size(Cg,2) if(Bg(i,j)==Minc) disp(sprintf('%d, %d', i,j)); end end end
385, 584 420, 622 424, 624 431, 591 457, 677 461, 816 462, 816 465, 781 467, 582 499, 632 499, 636…. Histogram dla trzech obrazów w skali szarości
hisA=zeros(256,1);
for i=1:size(Ag,1) for j=1:size(Ag,2) hisA(Ag(i,j)+1)=hisA(Ag(i,j)+1)+1; end end bar([1:256],hisA);
hisB=zeros(256,1);
for i=1:size(Bg,1) for j=1:size(Bg,2) hisB(Bg(i,j)+1)=hisB(Bg(i,j)+1)+1; end end bar([1:256],hisB);
hisC=zeros(256,1);
for i=1:size(Cg,1) for j=1:size(Cg,2) hisC(Cg(i,j)+1)=hisC(Cg(i,j)+1)+1; end end bar([1:256],hisC);
Za pomocą tablicy LUT popraw obrazy o złym kontraście
allA = size(Ag,1)*size(Ag,2); //ilość wszystkich pikseli - 1997568 Obrazek B distB=zeros(256,1);//dystrybuant dla obrazka Bg lutB=zeros(256,1);// tablica lut dla obrazka Bg; Obliczanie dystrybuanty: for i=1:256 h=0; for j=1:i h=hisB(j)+h; end distB(i)=h/allA; end
D0 – pierwszy niezerowy element dystrybuanty
Obliczanie tablicy LUT
for i=1:256 lutB(i)=((distB(i)-D0)/(1-D0))*255; end
Poprawiony obrazek
for i=1:size(Bg,1) for j=1:size(Bg,2) Bg2(i,j)=lutB(Bg(i,j)); end end
Obrazek C
distC=zeros(256,1); lutC=distC;
Obliczanie dystrybuanty:
for i=1:256 h=0; for j=1:i h=hisC(j)+h; end distC(i)=h/allA; end
Obliczanie tablicy LUT
for i=1:256 lutC(i)=((distC(i)-D0)/(1-D0))*255; end
Poprawka na uwzględniająca indeks 0:
lutC1=zeros(257,1); for i=1:256 lutC1(i+1)=lutC(i); end
for i=1:size(Cg,1) for j=1:size(Cg,2) Cg2(i,j)=lutC1(Cg(i,j)+1); end end
imshow(Cg2); [ Pobierz całość w formacie PDF ] |