Temat: Zastosowanie filtrów do obrazu biometrycznego dłoni.
1. Kwantyzacja - Quantize
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function quantize()
R=imread(path);
G=rgb2gray(R);
G=im2double(G);
[r,c]=size(G);
for i=1:r
for j=1:c
D(i,j)=G(i,j)/(2^α);
end
end
imshow(D);
imwrite(D, path1);
endfunction;
quantize();
Wartość α | Obraz po zastosowaniu filtru | Komentarz |
---|---|---|
α = 3 | ![]() |
Przyjęta początkowa wartość. |
α = 10 | ![]() |
Wraz ze wzrostem wykładnika obraz staje się ciemniejszy. |
α = 0.5 | ![]() |
Wraz ze zmniejszeniem wykładnika obraz staje się jaśniejszy. |
2. Brightness - Jasność
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function bright()
R=imread(path);
G=rgb2gray(R);
G=im2double(G);
[r,c]=size(G);
for i= 1 : r
for j= 1 : c
D1(i,j)=-1* G(i,j) + α;
D2(i,j)=G(i,j) + β;
end
end
imshow(D1);
imshow(D2);
imwrite(D1, path1);
endfunction;
bright();
Obraz D1 | Obraz D2 | Komentarz |
---|---|---|
α = 1 |
β = -0.5 |
Przyjęte wartości początkowe. |
α = 1.5 |
β = 0.4 |
Wraz e wzrostem parametrów obrazy D1 i D2 stają się jaśniejsze. |
α = 0.6 |
β = -2 |
Wraz ze zmniejszaniem parametrów, obrazy D1 i D2 stają się ciemniejsze |
3. Histogram
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function histogram()
R=imread(path);
G=rgb2gray(R);
G=im2double(G)*α;
[r,c]=size(G);
N=zeros(1,256);
for i=1:r
for j=1:c
k=ceil(G(i,j)+1);
N(k)=N(k)+1;
end
end
for i=1:r
for j=1:c
I=0;
for k=1:G(i,j)
I=I+N(ceil(k));
end
D(i,j)=I;
end
end
imshow(D);
imwrite(D, path1);
endfunction;
histogram();
Wartość α | Obraz po zastosowaniu filtru | Komentarz |
---|---|---|
α = 4 | ![]() |
Przyjęta wartość początkowa. |
α = 1 | ![]() |
Wraz ze zmniejszaniem wartości obraz staje się ciemniejszy. |
α = 7 | ![]() |
Wraz ze zwiększaniem wartości obraz staje się jaśniejszy. |
4 Gamma Correction – Współczynnik korekcji gama
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function gamma()
R=imread(path);
G=rgb2gray(R);
G=im2double(G);
[r,c]=size(G);
for i= 1 :r
for j=1 : c
D1(i,j)=G(i,j)^( α);
D2(i,j)=G(i,j)^( β);
D3(i,j)= 1/(1+exp(5*G(i,j)+ χ));
end
end
imshow(D1);
//imshow(D2);
//imshow(D3);
imwrite(D1, path1);
endfunction;
gamma();
Obraz D1 | Obraz D2 | Obraz D3 | Komentarz |
---|---|---|---|
α = 0.5 |
β = 6 |
χ = -1 |
Wartości początkowe. |
α = 0.1 |
β = 0.5 |
χ = -2 |
Wraz ze zmniejszeniem wartości obraz staje się jaśniejszy. |
α = 1.1 |
β = 20 |
χ = 0.1 |
Wraz ze zwiększaniem wartości obraz staje się ciemniejszy. |
5. Convolution - slot
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function blur()
f=imread(path);
f=rgb2gray(f);
f=im2double(f);
[r,c]=size(f);
for i=1:r
for j=1:c
ip=i+1;
im=i-1;
jm=j-1;
jp=j+1;
if(im<1)
im=i;
elseif (ip>r)
ip=i;
end
if(jm<1)
jm=j;
elseif (jp>c)
jp=j;
end
M(i,j)=f(i,j)* α + 0.1250*(f(i,jm)+ f(i,jp)+ f(ip,j)+ f(im,j)) + .0625 *(f(im,jm) +f(ip,jm)+f(ip,jp)+f(im,jp));
end
end
imshow(M);
imwrite(M, path1);
endfunction;
blur();
Wartości parametru α | Obraz po zastosowaniu filtru | Komentarz |
---|---|---|
α = 0.25 | ![]() |
Wartość początkowa. |
α = 0.15 | ![]() |
Wraz ze zmniejszeniem wartości obraz staje się mniej ostry i ciemniejszy. |
α = 0.5 | ![]() |
Wraz ze zwiększaniem wartości obraz staje się ostrzejszy i jaśniejszy. |
6. Derivative Filter (Sobel)
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function sobel()
R=imread(path);
G=rgb2gray(R);
G=im2double(G);
[r,c]=size(G);
for i=1:r
for j=1:c
ip=i+1;
im=i-1;
jm=j-1;
jp=j+1;
if(im<1)
im=i;
elseif (ip>r)
ip=i;
end
if(jm<1)
jm=j;
elseif (jp>c)
jp=j;
end
Gx(i,j)=(G(im,jm) + 2*G(im,j) + G(im,jp))-(G(ip,jm) + 2*G(ip,j) + G(ip,jp));
Gy(i,j)=(G(im,jm) + 2*G(i,jm) + G(ip,jm))-(G(im,jp) + 2*G(i,jp) + G(ip,jp));
end
end
for i=1:r
for j=1 :c
GXY(i,j)=sqrt(Gx(i,j)^ α + Gy(i,j)^ β);
end
end
imshow(GXY);
imwrite(GXY, path1);
endfunction;
sobel();
Wartości parametrówα, β | Obraz GXY | Komentarz |
---|---|---|
α = 2 β = 4 |
![]() |
Wartości początkowe. |
α = 2 β = 2 |
![]() |
Wraz ze zmniejszeniem wartości obraz staje się mniej dokładny. |
α = 4 β = 2 |
![]() |
Wraz ze zwiększeniem parametru alfa daje podobny efekt jak w przypadku zwiększenia parametru beta. |
α = 4 β = 4 |
![]() |
Wraz ze zwiększeniem wartości obraz staje się dokładniejszy. ( najlepszy efekt ) |
7. Dithering - rozproszenie
path = 'd:/raczka.bmp';
path1 = 'd:/reka1.bmp';
function dithering()
R=imread(path);
G=rgb2gray(R);
pixel=im2double(G);
[r,c]=size(G);
for i=1:r
for j=1:c
ip=i+1;
im=i-1;
jm=j-1;
jp=j+1;
if(im<1)
im=i;
elseif (ip>r)
ip=i;
end
if(jm<1)
jm=j;
elseif (jp>c)
jp=j;
end
oldpixel(i,j) = pixel(i,j);
newpixel(i,j) = (oldpixel(i,j)+128)/256;
pixel(i,j) = newpixel(i,j);
quanterror = oldpixel(i,j) - newpixel(i,j);
pixel(ip,j) = pixel(ip,j) + α/16 * quanterror;
pixel(im,jp)= pixel(im,jp) + α/16 * quanterror;
pixel(i,jp)= pixel(i,jp)+ α/16 * quanterror;
pixel(ip,jp)= pixel(ip,jp)+ α/16 * quanterror;
end
end
imshow(pixel);
imwrite(pixel, path1);
endfunction;
dithering();
Wartości parametru α | Obraz pixel | Komentarz |
---|---|---|
α = 5 | ![]() |
Wartości początkowe. |
α = 3 | ![]() |
Wraz ze zmniejszaniem wartości obraz staje się dokładniejszy. |
α = 7 | ![]() |
Wraz ze zwiększeniem wartości obraz staje się bardziej rozproszony. |