Zpracování signálù a obrazù
Úvod, vzorkování, jasové transformace
1.Naète vstupní
obraz z disku.
2.Zmenšení rozlišení
800 x 600 na 200 x 150. øeèeno jinak, pøevzorkujte
vstupní obraz s použitím vzorkovací frekvence f=fpùv/4.
3.Zmenšený obrázek
uloží na disk.
4.Zmenšený obrázek
opìt zvìtší na pùvodní úroveò.
5.Takto zvìtšený
obraz uloží na disk.
Cíl: co nejlepší vizuální
kvalita takto zpracovaného obrazu. V prvotním pøiblížení
se zamìøte na rychlé zpracování obrazu,
posléze doplòte èást týkající
se
vzorkovacího teorému.
a) Dvoubarevný obrázek
1. Pùvodní obrázek
2. Po porušení vzorkovací
vìty (bereme jen každý 4.bod) TIF
3. Po zvetšení na pùvodní
velikost všech 16bodù (4x4) vyplníme stejným jasem
TIF
for i=1:4:(4*size(pom,1)-4)
for
j=1:4:(4*size(pom,2)-4)
pom2(i:i+3,j:j+3)=pom((i-1)/4+1,(j-1)/4+1);
end;
end;
figure(3);
imshow(pom2);
imwrite(pom2,'poly_ok.tif','tif');
Logické podmínky pøi indexování
Úkol:
Zpracujte logo CMP tak, aby pravá
polovina obrazu byla celé èerná, èili aby zmizel
šedý ètverec a bílá písmena "mp". Užiteèné
funkce (kromì základních):
impixel, logical.
Požadovaný výsledek: Obraz
získaný po zpracování výše uvedenými
operacemi.
Výpis programu z MATLABu:
close all;
clear all;
obrazek=imread('cmplogo.tif');
figure(1);
subplot(1,2,1);
imshow(obrazek);
mazany=obrazek;
vyska_obrazku=size(mazany,1);
sirka_obrazku=size(mazany,2);
% je nutne kliknout na plochu,
kterou chci vycernit
odstin=impixel(obrazek);
% ulozim si jen polovinu
obrazku
pom = mazany(1:size(mazany,1),(size(mazany,2)/2):size(mazany,2));
for i=1:(size(odstin,1)-1)
pom(pom == odstin(i,1))
= 0;
end
mazany(1:size(mazany,1),(size(mazany,2)/2):size(mazany,2))
= pom;
%mazany(mazany(1:size(mazany,1),(size(mazany,2)/2):size(mazany,2))
> 0 ) = 0;
subplot(1,2,2);
imshow(mazany);
Úkol:
Zlepšete kvalitu RGB obrazu zvýšením
hodnoty jasu. Zachovejte co nejvìrnìji pùvodní
barvy. Výsledek uložte ve formátu jpeg v maximální
možné kvalitì. Užiteèné funkce (kromì
základních): brighten, rgb2hsv, hsv2rgb
Požadovaný výsledek: Vylepšený
obraz.
Výpis programu z MATLABu:
clear
all;
close
all;
obrRGB=imread('omnidark.tif');
figure(1);
imshow(obrRGB);
obrHSV=rgb2hsv(obrRGB);
figure(2);
imshow(obrHSV);
for
i=1:(size(obrHSV,1)-1)
for j=1:(size(obrHSV,2)-1)
if(obrHSV(i,j,3)~= 0)
obrHSV(i,j,3) = obrHSV(i,j,3)*1.6+0.2;
end
if(obrHSV(i,j,3)>1)
obrHSV(i,j,3)=0.95;
end
end
end
obrRGBnovy=hsv2rgb(obrHSV);
figure(4);
imshow(obrRGBnovy);