Komputerowa analiza obrazu

Transkrypt

Komputerowa analiza obrazu
Komputerowa analiza obrazu
Laboratorium 3
Przykład 1
Dodanie stałej wartości do obrazu monochromatycznego(zwiększenie jasności):
L1=imread('portret.jpg');
figure;
imshow(L1);
L2 = uint8(double(L1) + 50);
figure;
imshow(L2)
lub:
L1=imread('portret.jpg');
L1=double(L1)/255;
figure;
imshow(L1);
L2=(L1)+0.3;
figure;
imshow(L2)
Jak w prosty sposób uzyskać negatyw zdjęcia?
Przykład 2
Część informacji utracona po rozjaśnieniu obrazu metodą z nasyceniem:
L1=imread('portret.jpg');
L1=double(L1)/255;
figure;
imshow(L1);
L2=(L1)+0.5;
figure;
imshow(L2);
L3=((L2>1)-0.5);
figure;
imshow(L3)
Przykład 3
Logarytmowanie obrazu:
Do wykonania operacji logarytmowania obrazu należy użyć funkcji "log".
Proszę pamiętać o dodaniu wartości 1 (ze względu na nieokreśloność funkcji
w 0).
L1=imread('portret.jpg');
figure;
imshow(L1);
L1=double(L1);
L2=log([L1+1]);
figure;
imshow(L2,[])
Zadanie 1
Proszę wykonać następujące przekształcenia obrazu:
• odejmowanie stałej wartości od każdego z pikseli obrazu (na obrazie
monochromatycznym oraz barwnym),
• pierwiastkowanie,
• potęgowanie (obydwa na obrazie "portret.jpg").
Uwagi:
Podczas potęgowania posłużmy się operatorem kropkowym, by operację wykonać
zgodnie z zasadami rachunku tablicowego.
Przykład 4
Trójkątna charakterystyka luminancji obrazu (jasność rośnie w przedziale od
0 do 128, następnie maleje) powoduje tzw. efekt solaryzacji.
L1=imread('portret.jpg');
figure;
imshow(L1);
map=[gray(128); flipud(gray(128))];
figure;
imshow(L1, map);
Przykład 5
Histogram obrazu o niskim kontraście:
L1=imread('portret.jpg');
figure;
imshow(L1);
[y,x]=imhist(L1);
figure;
bar(x,y)
Zadanie 2
Proszę rozjaśnić obraz „portret.jpg”, a następnie go przyciemnić. Porównać
histogramy obrazów po przekształceniu.
Uwaga! Wykonaj zadanie używając reprezentacji obrazu za pomocą double oraz
uint8. Jakie są różnice i z czego wynikają?
Przykład 6
Normalizacja jasności w obrazie monochromatycznym:
L1=imread('portret.jpg');
figure;
imshow(L1);
L2=imadjust(L1,stretchlim(L1),[]);
figure;
imshow(L2)
IMADJUST Adjust image intensity values or colormap.
J = IMADJUST(I,[LOW_IN HIGH_IN],[LOW_OUT HIGH_OUT],GAMMA) maps the
values in intensity image I to new values in J such that values between
LOW_IN and HIGH_IN map to values between LOW_OUT and HIGH_OUT. Values
below LOW_IN and above HIGH_IN are clipped; that is, values below
LOW_IN
map to LOW_OUT, and those above HIGH_IN map to HIGH_OUT. You can use an
empty matrix ([]) for [LOW_IN HIGH_IN] or for [LOW_OUT HIGH_OUT] to
specify the default of [0 1]. GAMMA specifies the shape of the curve
describing the relationship between the values in I and J. If GAMMA is
less than 1, the mapping is weighted toward higher (brighter) output
values. If GAMMA is greater than 1, the mapping is weighted toward
lower
(darker) output values. If you omit the argument, GAMMA defaults to 1
(linear mapping).
STRETCHLIM Find limits to contrast stretch an image.
LOW_HIGH = STRETCHLIM(I,TOL) returns a pair of intensities that can be
used by IMADJUST to increase the contrast of an image.
Zadanie 3
Proszę wyświetlić histogram obrazu po przeprowadzeniu normalizacji i
porównać go z histogramem obrazu źródłowego
Zadanie 4
Na podstawie analizy histogramów dokonać korekcji obrazów „3.jpg” oraz
„4.jpg”.
UWAGA: Sprawdź efekty po wykonaniu
L2=imadjust(L1,stretchlim(L1),[0.5 1]);
oraz
L2=imadjust(L1,stretchlim(L1),[0 0.5]);
Przykład 7
Normalizacja jasności obrazu ze zmiennym współczynnikiem gamma modulacji
(γ=0.6 oraz 2.2).
Obraz źródłowy charakteryzował się słabym kontrastem. Poziomy szarości
zawierały się w granicach [in_low, in_high]=[0.3 0.7].
L1=imread('rtg.jpg');
figure;
imshow(L1);
[y,x]=imhist(L1);
figure;
bar(x,y);
L2a=imadjust(L1,[0.3 0.7],[],0.6);
figure;
imshow(L2a);
[y,x]=imhist(L2a);
figure;
bar(x,y);
L2a=imadjust(L1,[0.3 0.7],[],2.2);
figure;
imshow(L2a);
[y,x]=imhist(L2a);
figure;
bar(x,y);
Zadanie 5
Wypróbować tę operację na obrazie „portret.jpg” ustalając zakres jasności
wykorzystany w obrazie źródłowym na podstawie histogramu.
Przykład 8
Wyrównanie (spłaszczenie, linearyzacja) histogramu rzeczywistego obrazu
monochromatycznego:
L1=imread('portret.jpg');
figure;
imshow(L1);
figure;
set(gcf,'Color',([1 1 1]));
imhist(L1);
L2=histeq(L1);
figure;
imshow(L2);
figure;
set(gcf,'Color',([1 1 1]));
imhist(L2)
Przykład 9
Wyrównanie histogramu obrazu barwnego z wyświetleniem histogramów kanału
czerwonego przed i po wyrównaniu:
[L1,map1]=imread('Victoire.tif');
L1=ind2rgb(L1,map1);
figure;
imshow(L1);
L1r=L1(:,:,1);
L1g=L1(:,:,2);
L1b=L1(:,:,3);
figure;
[x,y]=hist(L1r(:));
bar(y,x,1/255);
xlabel('Nasycenie koloru czerwonego','FontSize',15,'FontName','Arial
CE');
ylabel('Ilość pikseli[/]','FontSize',15,'FontName','Arial CE');
L2r=histeq(L1r);
L2g=histeq(L1g);
L2b=histeq(L1b);
figure;
imshow(cat(3,L2r,L2g,L2b));
figure;
[x,y]=imhist(L2r(:));
bar(y,x,1/255);
xlabel('Nasycenie koloru czerwonego','FontSize',15,'FontName','Arial
CE');
ylabel('Ilość pikseli[/]','FontSize',15,'FontName','Arial CE');
Zadanie 6
Proszę zaobserwować różnice na innych kanałach barw.
Przykład 10
Tworzenie maski binarnej fragmentu obrazu.
Fragment został wybrany za pomocą prostokąta, dla którego współrzędne
wierzchołków (x,y) wskazano dzięki funkcji "roipoly". Współrzędne są
wprowadzane kolejno, począwszy od prawego górnego narożnika.
L1=imread('las.bmp');
figure;
imshow(L1);
x=[150 300 300 150];
y=[400 400 200 200];
L2=roipoly(L1,x,y);
figure;
imshow(L2)
Zadanie 7
Proszę wyciąć z obrazu fragment o kształcie dowolnego wielokąta.
Przykład 11
Wycięcie fragmentu wskazanego za pomocą myszki i skopiowanie go do nowego
okna:
[L1,map]=imread('las.bmp');
L1=ind2gray(L1,map);
figure;
imshow(L1);
L2=imcrop(L1);
figure;
imshow(L2)

Podobne dokumenty