Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Funkcja znajdująca dźwięk wskazywany na wirtualnej klawiaturze z wykorzystaniem modelu barwy obiektu.
- %
- % dzwiek = ZnajdzKlawisz13model(obraz, model, szer_wsk)
- %
- %obraz - obraz z wirtualną klawiaturą i obiektem wskazującym klawisz,
- %model - model barwy obiektu (wskaźnika),
- %szer_wsk - szerokość wskaźnika w pikselach; jeżeli <= 0 to wartość
- % parametru wyliczna jest automatycznie
- %
- %dzwiek - dźwięk przypisany wskazywanemu klawiszowi.
- %
- %UWAGA:
- %Jeżeli żaden z klawiszy nie jest aktualnie wskazywany, w zmiennej 'dzwiek'
- %znajduje się pusty napis (3 spacje).
- %
- function dzwiek = ZnajdzKlawisz13model(obraz, model, szer_wsk)
- dzwiek = ' ';
- obrazBW = bwmorph(ZnajdzObiekt(obraz, model),'dilate');
- %figure(3); imshow(obrazBW); title('Wykryty obiekt');
- palec = bwdist(1-obrazBW);
- figure(3); imagesc(palec);
- [maxw, imaxw] = max(palec);
- [maxk, imaxk] = max(maxw);
- if imaxk == 1,
- return;
- end;
- if imaxk == size(obraz, 2),
- imaxk = imaxk-1;
- end;
- if size(obraz, 2) == 320,
- w0is = size(obraz, 1) - 80;
- w1is = size(obraz, 1) - 36;
- polszis = 14;
- elseif size(obraz, 2) == 160,
- w0is = size(obraz, 1) - 40;
- w1is = size(obraz, 1) - 18;
- polszer = 7;
- else
- error('Nieznana klawiatura');
- end;
- if imaxw(imaxk) < w0is,
- return;
- end;
- %Klaw13 = ['C ';'Cis';'D ';'Dis';'E ';'F ';'Fis';'G ';'Gis';'A ';'Ais';'H ';'C '];
- Klaw8 = ['C ';'D ';'E ';'F ';'G ';'A ';'H ';'C2 '];
- maska_isow = [1 1 0 1 1 1 0 0];
- szerokosc_klawisza = size(obraz, 2)/8;
- if szer_wsk <= 0,
- szer_wsk = szerokosc_klawisza/10;
- end;
- if maxk >= szer_wsk/2,
- klawisz = floor(imaxk/szerokosc_klawisza);
- if imaxw(imaxk) <= w1is && imaxw(imaxk) >= w0is,
- dklawisz = rem(imaxk, szerokosc_klawisza);
- if dklawisz <= szerokosc_klawisza/3,
- if klawisz > 0
- if maska_isow(klawisz) == 1,
- dzwiek = [deblank(Klaw8(klawisz)) 'is'];
- end;
- else
- dzwiek = Klaw8(klawisz+1);
- end;
- elseif dklawisz >= 2*szerokosc_klawisza/3,
- if maska_isow(klawisz+1) == 1,
- dzwiek = [deblank(Klaw8(klawisz+1)) 'is'];
- else
- dzwiek = Klaw8(klawisz+1);
- end;
- else
- dzwiek = Klaw8(klawisz+1,:);
- end;
- else
- dzwiek = Klaw8(klawisz+1,:);
- end
- disp([dzwiek '(' num2str(klawisz) '): [' num2str(imaxk) ', ' num2str(imaxw(imaxk)) ']; ' ]);
- disp(['Maksymalna odleglosc od tla: ' num2str(maxk)]);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement