Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation Projekt 2 Möjligheter/Problem med 2-dimensionella mätdata Uppstart: Se planen (kursens hemsida) Etapp 1 Mätdata i 2 dimensioner behöver utredas/signalbehandlas i frekvensdomänen och i spatialplanet. Handledare: TFE/US Etapp 2 Ett verktyg med Wavelets beställs för komprimering av mätdata i stora volymer Handledare: TFE/BT Stoppdatum för P2-projektets rapport 1 : Se planen (kursens hemsida). 1 Den skriftliga dokumentationen skall bestå av en teknisk rapport (riktad till beställaren) samt en kortfattad rapport (delar enligt projektmodellen) om projektarbetet (riktad till projektets handledare). Dokumentationen läggs senast på stoppdatum till kursens P2- dokument-databas. Etapp 1 Problem med 2-dimensionella mätdata Problembeskrivning för etapp 1 Uppdragsgivaren överväger att använda signalbehandling för sina 2-dimensionella mätdata/bilder. För att förstå hur det kan användas får ni i uppdrag att göra en förstudie och se hur filtrering av mätdata fungerar både i spatialdomänen och i frekvensdomänen. Ni ska också utvärdera vilka fördelar och nackdelar som finns med de olika metoderna. Man vill även ta fram ett verktyg för klassificering av 2-dimensionella mätdata, och har gett er ett antal bilder som ni ska prova att klassificera. Uppdragsgivaren önskar att motsvarande signalbehandling utförs med Matlab där m-koden levereras tillsammans med analysen/rapporten. I. Hur kan man med Fouriertransformen behandla 2-dimensionella mätdata? II. Hur tillämpas faltning i spatialplanet? III. Hur tillämpas filtrering i frekvensdomänen? IV. Kan man klassificera 2-dimensionella mätdata med FFT? I så fall hur? V. Ett antal detaljfrågor ingår även i uppdraget. Man har sammanställt dessa Se bilga P2-1 Länk till 2-dim exempel-data/bilder (.zip-fil med namnet bilder.zip) hittar du i kursens Moodle.
Tvådimensionell signalbehandling Filtrering och fouriertransformering Tillämpad Digital Signalbehandling Tips på användbara MATLAB-funktioner anges med fet stil (ta reda på hur dessa fungerar innan de används, help funktionsnamnet ), MATLAB-kod är skriven med typsnittet courier i den här specifikationen. Del 1 Fouriertransform 1.1 Fourieranalys i två dimensioner Här kommer ni att skapa en bild som ni sedan ska undersöka dess egenskaper i frekvensdomänen. Pixlarna i bilden representeras av ett flyttal mellan 0 och 1. Vid vissa beräkningar måste du skala om pixelvärden så att de ligger inom det tillåtna området. Ett hjälpmedel för att få en uppfattning om pixlarnas intensitetsvärden är funktionen hist. Den ritar upp ett histogram som visar frekvensen för varje intensitetsvärde. Börja med att studera en (egentligen imensionell) sinussignal. Nedanståe kod skapar en 64 64 pixlars bild med två perioder av en horisontell sinusvåg. Bilden är skapad för att kunna visas med imshow, alltså uppflyttad och skalad att ligga mellan 0 och 1. Signalen centreras sedan runt x-axeln innan fouriertransformen beräknas. (fft, fft2, fftshift) clear; %ger en bild av format antal x antal antal=64; %antal perioder i bilden perioder=2; %orginalbild for m=1:1:antal for n=1:1:antal bild(m,n)=0.5+0.5.*sin(2.*pi.*(n./(antal./perioder))); subplot(1,2,1),imshow(bild);title('originalbild'); %ta bort bakgrunds-grånivå A=bild-.5; B=abs(fftshift(fft2(A))); subplot(1,2,2),imshow(b);title('beloppskaraktär'); 1.1.1. Tolka resultatet av fouriertransformen. Vad borde frekvensspektrat visa (transformen av en sinusvåg)? Stämmer resultatet med det teoretiska resultatet? 1.1.2. Vad händer med frekvensspektrat om man istället låter sinusvågen löpa vertikalt över bilden? 1.1.3. Skapa en bild med en 9 9 pixel vit kvadrat i mitten av bilden, svart i övrigt. Här kan man behöva skala om frekvensbilden för att kunna visualisera den. Prova att använda en logtransform (log(abs(fftshift(fft2(bild)))+1)), eller skala om bilden så att alla värden ligger mellan 0-1 (bild2=(bild-min(min(bild)))./(max(max(bild))- min(min(bild)))), eller båda omskalningar. Beskriv frekvensspektrat, stämmer det med teorin (transformen av en kvadrat)? 1.2. Signalernas utbredning
Nu ska ni ändra lite på signalerna i föregåe uppgifter. Gör kvadraten i uppgift 1.1.3 större, 15 15 pixlar. 1.2.1. Hur förändras frekvensspektrat? Förklara hur signalens utbredning i spatialplanet påverkar utbredningen i frekvensdomänen. Ändra utbredningen på signalen i 1.1 genom att rita upp 2,5 perioder av sinusvågen. Skala om frekvensbilden så att den lämpar sig för visualisering. 1.2.2. Hur förändras utbredningen? Skiljer det sig från föregåe uppgift? 1.2.3. Läs in en riktig bild, smregit.bmp som finns på hemsidan, och skapa en frekvensbeskrivning av denna. Förklara hur du burit dig åt. Gör en verbal tolkning av din bild! (imread, ind2gray) 1.3. Invers FFT och fasbeloppet Nedanståe kod skapar en enkel bild, en vertikal balk. I figuren visas denna och frekvensspektrat för bilden. %ger en bild av format antal x antal antal=64; bild=zeros(antal,antal); for n=antal/4-2:1:antal/4+2 for m=1:1:antal bild(m,n)=1; %originalbild; subplot(1,3,1),imshow(bild);title('orginalbild'); %beloppet av fft-analys fftbild=(fft2(bild)); B=abs(fftshift(fftbild))./300; %Skala om för visualisering subplot(1,3,2),imshow(b);title('frekvensinnehåll'); %invers fft av föregåe bild C=(ifft2(fftbild)); subplot(1,3,3),imshow(c);title('invers fft'); Nu ska ni rita upp en horisontell balk som ligger högst upp i bilden. Denna kod ritar upp balken, frekvensbeloppet av FFT:n av balken, frekvensernas fas, samt ett imensionellt snitt genom fasen, visat liggande. %ger en bild av format antal x antal antal=64; bild=zeros(antal,antal); for m=1:1:5 for n=1:1:antal bild(m,n)=1; %originalbild; subplot(2,2,1),imshow(bild);title('orginalbild'); fftbild=(fft2(bild)); %beloppet av fft-analys
fftbildbelopp=abs(fftshift(fftbild)); B=(fftbildbelopp-min(min(fftbildbelopp)))./(max(max(fftbildbelopp))- min(min(fftbildbelopp))); subplot(2,2,2),imshow(b);title('frekvensinnehåll'); %beräkna fasen C=angle(fftshift(fftbild)); D=(C+pi)/(2.*pi); subplot(2,2,3),imshow(d);title('faskaraktär'); E=C(:,antal/2+1); F=E'; G=unwrap(F); K=G'; subplot(2,2,4),plot(k);title('faskaraktär imensionellt'); Flytta balken i höjdled. Låt balken börja vid 11:e och 21:a pixeln i stället för första. 1.3.1. Hur förändras beloppsbilden när balken flyttas? 1.3.2. Hur förändras fasen? Del 2 Filtrering 2.1. Faltning (filtrering i spatialplanet) För att filtrera en bild i spatialplanet använder man faltning; man faltar helt enkelt insignalen med systemets (filtrets) impulssvar. Ofta är insignalen en lång signalsekvens, medan impulssvaret är en kortare sekvens. Den senare kallas ibland för faltningskärna. Faltning heter på engelska "convolution". (conv, conv2) Skapa en bild med en 15 15 pixlars kvadrat i mitten, liknande den i uppgift 2. Gör sedan en faltningskärna med följande utsee enligt nedanståe MATLAB-kod: 1 1 1 1 1 1 1 1 1 /9 filter=ones(3, 3)./9; Filtrera bilden genom att falta den med filtret. 2.1.1. Hur förändras bilden efter filtreringen? Jämför frekvensspektrat av bilden före och efter filtrering. Hur har bildens frekvenser påverkats? 2.1.2. Ändra storleken på filtret till 7 7 pixlar. (Filtret är ett medelvärdesfilter, dvs. det beräknar medelvärdet av alla pixlar i ett område runt aktuell pixel. Kom därför ihåg att dividera ettorna med antalet pixlar i kärnan.) Gör om filtreringen. Hur påverkas bilden nu? Jämför med föregåe uppgift. Vilken betydelse har storleken på faltningskärnorna? Skapa ett nytt filter med följande utsee (Laplace-filter): 0 1 0 1 4 1 0 1 0 filter=[0 1 0; 1-4 1; 0 1 0]; 2.1.3. Filtrera originalbilden med filtret. Förklara hur bilden och dess frekvensspektra påverkas.
2.2. Filtrering i frekvensdomänen Den andra metoden för att filtrera används i frekvensplanet. När man filtrerar i frekvensdomänen multiplicerar man fouriertransformen av en signal med ett filter som förstärker eller försvagar vissa frekvenser. Filtret kan antingen skapas i frekvensdomänen, eller bestå av transformen av en faltningskärna. Transformera både bilden med kvadraten och 3 3 medelvärdeskärnan: [M1 N1]=size(bild); [M2 N2]=size(filter); M=M1+M2-1; %Bilderna måste "zero-paddas" till denna storlek N=N1+N2-1; fftbild=fftshift(fft2(bild, M, N)); % Bestäm storleken på FFT:n, fftfilter=fftshift(fft2(filter, M, N)); % MATLAB zero-paddar automatiskt B1=log(abs(fftbild)+1); B1=(B1-min(min(B1)))./(max(max(B1))-min(min(B1))); C1=log(abs(fftfilter)+1); C1=(C1-min(min(C1)))./(max(max(C1))-min(min(C1))); figure subplot(1,2,1),imshow(b1);title('originalbild'); subplot(1,2,2),imshow(c1);title('filter'); Filtrera bilden genom att multiplicera dess FFT med filtrets nybild=fftbild.*fftfilter; %elementvis multiplikation D1=log(abs(nybild)+1); D1=(D1-min(min(D1)))./(max(max(D1))-min(min(D1))); figure subplot(1,2,1),imshow(d1);title('filtrerad bild, frekvensbelopp'); och transformera tillbaka till spatialdomänen: nybild=fftshift(nybild); %skifta tillbaka recreate=ifft2(nybild); subplot(1,2,2),imshow(recreate);title('filtrerad bild'); 2.2.1. Beskriv hur filtret ser ut. Vilka frekvenser försvagas? Hur påverkas bilden? 2.2.2. Jämför men bilden du filtrerade genom faltning i 2.1. Vad skiljer de filtrerade bilderna åt? 2.2.3. Hur ser filtrets frekvensbelopp ut om man ökar kärnans storlek till 7 7? Stämmer detta med resultatet i 2.1.2? 2.2.4. Vad finns det för fördelar och nackdelar med att filtrera i spatial resp. frekvensdomänen? Del 3 Klassificering I filen bilder.zip finns det exempel på olika bilder. Bilderna består av tre olika sorters mönster, horisontala linjer, vertikala linjer och rutmönster. Försök att göra en automatisk klassificering i tre grupper med hjälp av FFT.
Etapp 2 Komprimering av 2-dimensionella mätdata Problembeskrivning och uppdragsspecifikation för etapp 2 Målet med projektet är att utreda om uppdragsgivaren skall övergå till att använda Wavelets till sitt stora arkiv med mätdata/bilder. F.n. använder man DCT vid den elektroniska lagringen men man är osäker på fördelarna/nackdelarna på ett eventuellt byte (se även bilaga P2-2). I en första etapp vill man ha klarhet i följande frågor (se nedan) och förutom källkoden i Matlab m-kod beställer man en tillhörande teknisk rapport med motsvarande konkreta analyser/exempel/bilder. VI. Hur kan jag med verktyget Wavelets komprimera mina mätdata? Mätdata utgörs av en vald 2-dimensionell s/v bild. VII. Hur rekonstruerar jag mina mätdata? Hur kan jag återbilda data med mindre rekonstruktionsfel - Vilka data (eg. waveletskoefficienter) har minst- respektive mest betydelse? VIII. Hur bra är rekonstruktionen? I det teoretiska fallet - respektive i ett konkret fall med en vald testbild - hur stort är felet? Hur stor del av bildens Wavletskoefficienter kan ha värdet 0 utan att den återskapade bildens kvalitet blir betydligt sämre? Finns det några lämpliga mått för att mäta/jämföra slutresultatets kvalitet? IX. Jämför Waveletstranformen med DCT (diskreta cosinustransformen. Vad blir skillnaden mellan transformmetoderna rent resultatmässigt? Hur skiljer sig metoderna då data vid rekonstruktionen tillåts gå förlorade till begränsad del? X. Man har samplade mätdata i två fall: a) en dimension b) två dimensioner För båda fallen gäller att signalen/mätdata har Gaussiskt vitt brus adderad. Ger Waveletstransformen något stöd för att filtrera/renodla signalen/mätdata? I så fall hur bra/dåligt fungerar det i några exempelfall jämfört med t.ex. LP-filtrering
Verktyg för wavelets i Matlab: http://www.mathworks.com/access/helpdesk/help/pdf_doc/wavelet/wavelet_ug.pdf Bilaga P2-2