Dr. Baranyai László, fénykép

Dr. Baranyai László

 

Képfeldolgozás: Hol a virág?

aug 23, 19:19, |

 

A képfeldolgozás igazán ott kezdődik, amikor értékes adatokat nyerünk ki egy képből. Ilyen például egy virág azonosítása. Egy automatikus, szegmentálást nem igénylő technikát próbáltam ki, amely feltételezi, hogy egyetlen objektum lehet a képen. A kódot GNU Octave rendszerben készítettem és teszteltem.

Virág pozíció számítása

Az alábbi virág képen egyetlen fej látható. A cél, hogy automatikusan azonosítani lehessen a pozícióját.

Színes virág teszt kép
Színes virág teszt kép

Mivel a virág rózsaszín, érdemes a piros színre koncentrálni. A piros csatornán jól látható világosabb folt a virág. A közepét súlyozott átlag számításával megtalálhatjuk, ahol a súlyzó faktor az intenzitás.

Virág teszt kép - piros csatorna
Virág teszt kép - piros csatorna

A számolás pontosítása érdekében csak az 50% intenzitás feletti piros részekkel foglalkozik a függvény. Megvalósítása Octave-ban:

%% Find single red flower on truecolor image
%% img = input image matrix
%% FX,FY = flower coordinates
function [FX,FY] = findflower(img)
 [Height,Width,Layers] = size(img);
 FX = uint64(0);
 FY = uint64(0);
 if (Layers == 3)
  red = img(:,:,1);
  tv = ( min(min(red)) + max(max(red)) )/2;
  S  = uint64(0);
  for y = 1:Height
   for x = 1:Width
    tmp = red(y,x);
    if (tmp > tv)
     FX = FX + uint64(x)*uint64(tmp);
     FY = FY + uint64(y)*uint64(tmp);
     S  = S  + uint64(tmp);
    endif
   end
  end
  FX = FX / S;
  FY = FY / S;
 else
  error("Non-color image matrix!");
 endif
endfunction

Használata igen egyszerű:

octave:1> pic = imread("test02.jpg");
octave:2> [a b] = findflower(pic)
a = 223
b = 164

Az eredmény a képen kicsit félrecsúszott a bal oldalon látható halvány foltnak köszönhetően.

Virág teszt kép - piros célkereszt
Virág teszt kép - piros célkereszt

Ezen javíthatunk a korábbi bejegyzésben bemutatott normálás segítségével, amely a domináns színt emeli ki.

octave:3> [a b] = findflower( imgnorm(pic) )
a = 256
b = 180

Az eredmény sokkal jobb:

Virág teszt kép - normált piros célkereszt
Virág teszt kép - normált piros célkereszt

Akik szeretnének más megközelítést is kipróbálni, nézzék meg a kép zöld csatornáját. Azon a képen a virág sötét foltként látszik. Végül a kapott koordinátákat felhasználhatjuk a kép további feldolgozására vagy irányíthatunk akár egy szedőrobotot. Jó szórakozást!