Histogram över kanter i bilder Metod Både den svartvita kanstdetekteringen och detekteringen av färgkanter följer samma metod. Först görs en sobelfiltrering i både vertikal och horisontell led. De pixlar vars absoluta sobelsumma överstiger ett visst värde markeras som kanter. Dessa kanter klassas sedan i först 4, sedan 8 riktninger, beroende på kantens riktning. I det svartvita fallet finns det bara 8 klasser som pixlarna kan delas upp i, men i färgfallet finns det 448 eftersom det även är beroende av vilken färg det är i pixeln och alla kombinationer av gradientriktningar i de tre färgplanen. Svartvit Första versionen av kanträkningsfunktionen räknade bara antalet kanter (d.v.s det antal pixlar vars sobelgradient översteg ett visst gränsvärde) i åtta riktninger i svartvitt. Den modulen består av filerna bw_all_sobel_histograms.m, bw_combine_sobel_histograms.m, bw_sobel_histogram.m samt bw_sobel_direction_planes.m. Första filen löper genom ett givet antal bilder, laddar dem och anropr bw_combine_sobel_histograms.m som i sin tur anropar den sista filen två gånger för att skala om bilden och skicka den till den slutgiltiga kanträkningen i bw_sobel_direction_planes.m. bw_all_sobel_histograms.m returnerar sedan en array av histogram av längd 16 (2 skalningar, 8 riktningar). För att tydliggöra visas i Figur 1 detektionen av alla kanter med gradient pekande snett ned åt höger i bilden. Detektionen kan jämföras med orginalbilden (nedsamplad tillhöjden 200 pixlar) i Figur 2. I Figur 3 syns de tre första riktningarna kombinerade. Färg Den andra versionen, färgversionen, räknar kanter mellan färger i 8 riktningar. Metoden tar hänsyn till färgen i punkten och mot vad i färgrymden förändringen pekar. Den tar hänsyn till om kanten registreras i det röda planet men inte i de båda andra, då klassas kanten som en annan typ än om förändringen registrerats i alla plan för en pixel med samma färg. Detta resulterar i att det finns 56 typer av kanter efter att färgplanen binäriserats (färg eller inte färg). Då finns det 8 färgkombinationer och 7 möjliga förändringsriktningar vilket leder till 56 möjliga kombinationer. Detta beräknas sedan i 8 riktningar vilket slutligen ger ett histogram med 448 bins. Funktionerna är snarlika de för svartvit kantdetektering. rgb_all_sobel_histograms.m är nästan identisk med den svartvita motsvarigheten och skulle enkelt kunna generaliseras. Även rgb_sobel_direction_planes.m är lika dan som den svartvita motsvarigheten, sånär som på namnet. Det som skiljer är att i färgversionen måste kanterna klassas i kombination med färgvärden och detekteringen ske i tre färgplan. Indexeringen är relativt snabb, i snitt cirka 1 sekund per bild. Tiden varierar inte med storleken på bilden då alla bilder skalas ner till en max-storlek på 200 pixlar på den största ledden. Figur 4-6 visar motsvarande detektion som Figur 1-3 fast gjord på en färgbild. Man kan se att detekteringen blir lite mer distinkt.
Resultat Figur 7 och 8 visar resultatet av sökning på bild 1345 då de 2000 första bilderna i databasen var indexerade i svartvitt respektive färg. Bilderna i Figur 7 är inte uppenbart lika sökbilden eftersom sobeldiagrammet arbetar på mycket små ytor av bilden. En spräcklig yta kan ge lika många kantträffar som en strandlinje. Vid sökning bland färgkantsindexeringarna fås ett bättre resultat. Eftersom metoden tar hänsyn till färgen i kanterna fungerar den lite grann som ett rent färghistogram och ger därför så pass lika bilder färgmässigt. Problemet med spräckliga ytor kvarstår, men kvaliteten har ökats markant med hänsyn tagen till färgerna. Det är heller inte så konstigt eftersom färgkantshistogrammen har 448 bins, medans de svartvita endast har 16 bins. Förbättringar För att få med de mer signifikanta skillnaderna i bilderna skulle det kunna löna sig att skala ner bilderna till en ännu mindre storlek. Då försvinner mjuka övergångar och karaktärsdragen kan registreras. Samtidigt försvinner naturligtvis detaljrikedomen. För att motarbeta spräckliga ytors signifikans skulle man kunna filtrera bort enstaka kantregistreringar som dem i Figur 1 t.ex. Då skulle endast sammanhängande kanter noteras ochsållningen skulle bli hårdare. Bifogade filer För framtagande av histogram över svartvita kanter bw_all_sobel_histograms.m för att löpa igenom ett antal bilder i databasen. bw_combine_sobel_histograms.m slå ihop två 8 bins histogram. bw_sobel_histogram.m skala om bilden. bw_sobel_direction_planes.m hitta kanter i 8 riktningar. bw_variables.mat sobelfiltret. readdbimage.m läsa bild från databasen. För framtagande av histogram över färgade kanter rgb_all_sobel_histograms.m för att löpa igenom ett antal bilder i databasen. rgb_sobel_histogram.m moderfunktionen, skalar bilderna. rgb_sobel_direction_planes.m hitta kanter i 8 riktningar i ett färgplan. rgb_count_edges.m klassificera och räkna kanter. rgb_variables.mat sobelfiltret samt kantklassificeringsfiltret över alla färgkombinationer. readdbimage.m läsa bild från databasen. För sökning bland histogrammen closest.m get_best_eigen.m
Figur 1. Pixlar med gradient i samma riktning. Figur 2. Nedsamplad orginalbild. Figur 3. Tre riktningar i samma bild.
Figur 4. Pixlar med gradient i samma riktning. Figur 5. Nedsamplad orginalbild. Figur 6. Tre riktningar i samma bild.
Figur 7. Sökresultat vid sökning på bild 1345 bland 2000 indexerade bilder i svartvitt.
Figur 8. Sökresultat vid sökning på bild 1345 bland 2000 indexerade bilder i färg.