Sztuczny obraz RGB+gray:
Transkrypt
Sztuczny obraz RGB+gray:
Komputerowe przetwarzanie obrazu
Laboratorium 6
Przykład 1
Ilustracja problemu
obrazu:
L=eye(8)
K=[1,-2,; 8, 4];
obliczania
wartości
dla
punktów
położonych
na
L1=conv2(L, K, 'valid')
L2=conv2(L, K, 'same')
L3=conv2(L, K, 'full')
Przykład 2
Wpływ wielkości maski na proces filtrowania obrazu na przykładzie obrazu
sztucznego (filtr dolnoprzepustowy uśredniający):
% definicja obrazu
L=ones([16, 16])*255;
L(6:11, 6:11)=(0:43:255)'*ones([1 6]);
L(14,14)=0;
L=uint8(L);
figure(1); imshow(L, 'notruesize');
Maska1=[1,1,1; 1,1,1; 1,1,1]; % definicja maski filtru
L1=filter2(Maska1, L);
L1=mat2gray(L1);
figure(2); imshow(L1, 'notruesize');
Maska2= ones([5,5]);
L2=filter2(Maska2, L);
L2=mat2gray(L2);
figure(3); imshow(L2, 'notruesize');
Maska3=ones([7,7]);
L3=filter2(Maska3, L);
L3=mat2gray(L3);
figure(4); imshow(L3, 'notruesize');
brzegu
Przykład 3
Zależność efektu
uśredniający)
filtrowania
od
rozmiaru
maski
(filtr
dolnoprzepustowy
L=imread('portret.jpg','jpg');
figure(1);
imshow(L);
Maska1= ones([3, 3]);
L1=filter2(Maska1, L);
L1=mat2gray(L1);
figure(2); imshow(L1);
Maska2=ones([5, 5]);
L2=filter2(Maska2,L);
L2=mat2gray(L2);
figure(3); imshow(L2);
Maska3=ones([7,7]);
L3=filter2(Maska3,L);
L3=mat2gray(L3);
figure(4); imshow(L3)
Przykład 4
Filtry uśredniające – filtracja sztucznego obrazu maskami o wymiarach 3x3 z
różnym współczynnikami:
%FILTRY LINIOWE - Filtry uśredniające
L=ones([16, 16])*256;
L(6:11, 6:11)=(0:43:256)'*ones([1 6]);
L(14,14)=0;
L=uint8(L);
figure(1);
imshow(L, 'notruesize');
Maska1=[1,1,1; 1,1,1; 1,1,1];
L1=filter2(Maska1, L);
L1=mat2gray(L1);% W filtracji pojawiły się wartości poza przedziałem [ 0 255]
figure(2); imshow(L1, 'notruesize');
Maska2=[1,1,1; 1,2,1; 1,1,1];
L2=filter2(Maska2, L);
L2=mat2gray(L2);
figure(3); imshow(L2, 'notruesize');
Maska3=[1,2,1; 2,4,2; 1,2,1];
L3=filter2(Maska3, L);
L3=mat2gray(L3);
figure(4); imshow(L3, 'notruesize');
Maska4=[1,1,1; 1,0,1; 1,1,1];
L4=filter2(Maska4, L);
L4=mat2gray(L4);
figure(5); imshow(L4, 'notruesize');
Zadanie 1
Proszę wykonać filtrowania obrazu z przykładu 4 maskami np. o rozmiarze 5x5
oraz 7x7
Przykład 5
Filtry uśredniające Gaussa
L=ones([16, 16])*256;
L(6:11, 6:11)=(0:43:256)'*ones([1 6]);
L(14,14)=0;
L=uint8(L);
figure(1);
imshow(L, 'notruesize');
% Filtry Gaussa
Maska5=[1,4,1; 4,12,4; 1,4,1]; % definicja maski filtru (wartości elementów
aproksymują funkcję Gaussa
L5=filter2(Maska5, L);
L5=mat2gray(L5);
figure(5); imshow(L5, 'notruesize');
Maska6=[1,3,1; 3,16,3; 1,3,1];
L6=filter2(Maska6, L);
L6=mat2gray(L6);
figure(6); imshow(L6, 'notruesize');
Przykład 6
Filtrowanie obrazu rzeczywistego z szumem typu „sól i pieprz”:
L=imread('Krakow_1.jpg','jpg');
L=rgb2gray(L);
L=uint8(L);
figure(1);
imshow(L);
L1=imnoise(L, 'salt & pepper', 0.1); % ostatni parametr określa stopień
zakłócenia
figure(2);
imshow(L1);
Maska1=[1,1,1; 1,1,1; 1,1,1]; % definicja maski filtru
L1a=filter2(Maska1, L1);
L1a=mat2gray(L1a);
figure(3); imshow(L1a);
Maska2=[1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1]; % definicja
maski filtru
L1b=filter2(Maska2, L1);
L1b=mat2gray(L1b);
figure(4); imshow(L1b);
Maska2=ones([7,7]);% definicja maski filtru
L1c=filter2(Maska2, L1);
L1c=mat2gray(L1c);
figure(5); imshow(L1c);
Zadanie 2
Proszę przeprowadzić proces filtrowania dla tego samego obrazu filtrem Gaussa.
Zadanie 3
Proszę przeprowadzić proces filtrowania (wg programu z przykładu 6) dla innego
obrazu monochromatycznego, np. „portret.jpg”.
Przykład 7
Filtry górnoprzepustowe:
L=imread('portret.jpg','jpg');
figure(1);
imshow(L);
% filtr górnoprzepustowy usuwający średnią
Maska1=[-1,-1,-1; -1,9,-1; -1,-1,-1];
L1=filter2(Maska1, L);
L1=L1/255;
figure(2); imshow(L1);
% filtr górnoprzepustowy HP2
Maska2=[1,-2,1; -2,5,-2; 1,-2,1];
L2=filter2(Maska2, L);
L2=L2/255;
figure(3); imshow(L2);
Zadanie 4
Proszę zastosować własną maskę filtru górnoprzepustowego. Wypróbować jego
działanie na różnych obrazach.
Przykład 8
Działanie filtrów gradientowych z maskami: Robertsa, Prewitta, Sobela:
L=ones([16, 16])*256;
L(6:11, 6:11)=(0:43:256)'*ones([1 6]);
L(14,14)=0;
L=uint8(L);
figure(1);
imshow(L, 'notruesize');
%----------ROBERTSA---------------------------Maska1=[0,0,0; -1, 0, 0; 0, 1, 0];
L1=filter2(Maska1, L);
L1=mat2gray(L1);
figure(2); imshow(L1, 'notruesize');
%---------PREWITTA----------------------------Maska2=[-1,-1,-1; 0, 0, 0; 1, 1, 1];
L2=filter2(Maska2, L);
L2=mat2gray(L2);
figure(3); imshow(L2, 'notruesize');
%----------SOBELA---------------------------Maska3=[-1,-2,-1; 0, 0, 0; 1, 2, 1];
L3=filter2(Maska3, L);
L3=mat2gray(L3);
figure(4); imshow(L3, 'notruesize');
Przykład 9
Działanie filtrów gradientowych z maskami: Robertsa, Prewitta i Sobela dla
rzeczywistych obrazów.
L=imread('Krakow_1.jpg','jpg');
L =rgb2gray(L);
L =uint8(L);
figure(1);
imshow(L);
%----------ROBERTSA---------------------------Maska1=[0,0,0; -1, 0, 0; 0, 1, 0];
L1=filter2(Maska3, L);
L1=mat2gray(L1);
figure(2); imshow(histeq(L1));
%---------PREWITTA----------------------------Maska2=[-1,-1,-1; 0, 0, 0; 1, 1, 1];
L2=filter2(Maska2, L);
L2=mat2gray(L2);
figure(3); imshow(histeq(L2) );
%----------SOBELA---------------------------Maska3=[-1,-2,-1; 0, 0, 0; 1, 2, 1];
L3=filter2(Maska3, L);
L3=mat2gray(L3);
figure(4); imshow(histeq(L3));
Zadanie 4
Proszę przeprowadzić proces filtrowania (wg programu z przykładu 9) dla innego
obrazu np. „portret.jpg”
Przykład 10
Filtr uwypuklający pozwala zachować charakterystykę jasności obrazu, ale
„wzmacnia” krawędzie, nadając obrazowi „wypukłość”:
L=imread('portret.jpg','jpg');
figure(1);
imshow(L);
Maska1=[-1,-1,-1; 0, 1, 0; 1, 1, 1];
L1=filter2(Maska1, L);
L1=L1/255;
figure(2); imshow(L1);
Przykład 11
Filtrowanie filtrem
różnym nachyleniu)
Sobela
(wszystkie
typy
masek
–
wykrywanie
krawędzi
L=imread('Krakow_3.jpg','jpg');
L=rgb2gray(L);
L=uint8(L);
figure(1);
imshow(L);
%------------------------------Maska1=[2,1,0; 1, 0, -1; 0, -1, -2];
L1=filter2(Maska1, L);
L1=mat2gray(L1);
figure(2); imshow(histeq(L1));
Maska2=[1,2,1; 0, 0, 0; -1, -2, -1];
L2=filter2(Maska2, L);
L2=mat2gray(L2);
figure(3); imshow(histeq(L2));
Maska3=[0,1,2; -1, 0, 1; -2, -1, 0];
L3=filter2(Maska3, L);
L3=mat2gray(L3);
figure(4); imshow(histeq(L3));
Maska4=[1,0,-1; 2, 0, -2; 1, 0, -1];
L4=filter2(Maska4, L);
L4=mat2gray(L4);
figure(5); imshow(histeq(L4));
Maska5=[-1,0,1; -2, 0, 2; -1, 0, 1];
L5=filter2(Maska5, L);
L5=mat2gray(L5);
figure(6); imshow(histeq(L5));
Maska6=[0,-1,-2; 1, 0, -1; 2, 1, 0];
L6=filter2(Maska6, L);
L6=mat2gray(L6);
figure(7); imshow(histeq(L6));
Maska7=[-1,-2, -1; 0, 0, 0; 1, 2, 1];
L7=filter2(Maska7, L);
L7=mat2gray(L7);
figure(8); imshow(histeq(L7));
Maska8=[-2,-1, 0; -1, 0, 1; 0, 1, 2];
L8=filter2(Maska8, L);
L8=mat2gray(L8);
figure(9); imshow(histeq(L8));
Zadanie 5
Proszę wypróbować działanie powyższych filtrów na przykładzie innego obrazu,
np. „portret.jpg”
o
Zadanie 6
Dokonać modyfikacji w skrypcie w taki sposób, by otrzymać jasne krawędzie na
czarnym tle (na wzór przykładu 7).
Zadanie 7
Przemnożyć maskę Sobela przez wartość mniejszą, a następnie większą od 1 i
zaobserwować różnice w obrazach wynikowych, np.: Maska2=(1/6)*[-1,-2,-1; 0, 0,
0; 1, 2, 1];
Przykład 12
Wykrywanie narożników za pomocą masek Robinsona:
L=imread('Krakow_3.jpg','jpg');
L=rgb2gray(L);
L=uint8(L);
figure(1);imshow(L);
Maska1=[1,1,1;1,-2,-1;1,-1,-1]; %wykrywa krawędzie ukośne o nachyleniu 135º
względem osi x
L1=filter2(Maska1, L);
L1=L1/255;
L1=L1>0.2 %binaryzacja obrazu
figure(2); imshow(L1);
Maska2=[-1,-1,1;-1,-2,1;1,1,1]; %wykrywa krawędzie ukośne o nachyleniu 315º
względem osi x
L2=filter2(Maska2, L);
L2=L2/255;
L2=L2>0.2;
figure(3); imshow(L2);
L3=L1&L2; %punkty, które przyjęły wartość 1 na obu obrazach zbinaryzowanych
(narożniki?)
figure(4);
imshow(L3);
Przykład 13
Filtry Laplace’a (wykrywające wszystkie krawędzie, niezależnie od nachylenia):
L=imread('Krakow_3.jpg','jpg');
L=rgb2gray(L);
L=uint8(L);
figure(1);
imshow(L);
Maska1=[0,-1,0; -1,4,-1; 0,-1,0];
L1=filter2(Maska1, L);
L1=L1/255;
figure(2); imshow(L1);
Zadanie 8
Proszę zastosować filtry LAPL2 i LAPL3.
Aby efekt był wyraźniejszy, można dokonać progowania obrazu (np.: na podstawie
analizy histogramu). Proszę wypróbować różne wartości progu.