Журнал LinuxFormat - перейти на главную

LXF137:Perl

Материал из Linuxformat
Версия от 10:14, 13 декабря 2011; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Рас­по­зна­ва­ние об­ра­зов На­пи­шем про­грам­му, ко­то­рая чи­та­ет но­мер­ные зна­ки ав­то­мо­би­лей

Содержание

Perl: Об­на­ру­жим объ­ек­ты

Часть 4: Реа­ли­за­ция объ­ек­тов в Perl ос­тав­ля­ет же­лать луч­ше­го, но это не зна­чит, что с его по­мо­щью нель­зя на­хо­дить объ­ек­ты на фо­то­гра­фи­ях, счи­та­ет Ми­ха­ил Смир­нов.

Мно­гие прак­ти­че­ские при­ло­жения об­ра­бот­ки и ана­ли­за изо­бра­жений вклю­ча­ют про­це­ду­ру об­на­ру­жения и рас­по­зна­вания объ­ек­тов. В эту сфе­ру по­па­да­ют мно­гие за­да­чи со­вре­мен­но­сти: от ме­ди­цин­ских ис­сле­до­ваний до на­ви­га­ции ав­то­ма­ти­че­ских косми­че­ских стан­ций. В исто­ри­че­ском плане наи­боль­шую из­вест­ность по­лу­чи­ли ме­то­ды сравнения с эта­ло­ном, оцениваю­щие сте­пень кор­ре­ля­ции объ­ек­та об­на­ру­жения и эта­ло­на. В по­следние де­ся­ти­ле­тия ин­тен­сив­но раз­ви­ва­лись ме­то­ды рас­по­зна­вания об­ра­зов, осно­ван­ные на фор­маль­ном (струк­тур­ном или се­ман­ти­че­ском) опи­сании изо­бра­жений. К успе­хам фор­маль­ных опи­саний мож­но отнести при­ло­жения по рас­по­зна­ванию пе­чат­но­го тек­ста, от­пе­чат­ков паль­цев, клас­си­фи­ка­ции хро­мо­сом в био­ме­ди­цин­ских при­ло­жениях и так да­лее. В рас­по­зна­вании об­ра­зов по­лу­чи­ли дальней­шее раз­ви­тие и искусствен­ ные ней­рон­ные се­ти, основ­ное пре­иму­ще­ство ко­то­рых за­клю­ча­ет­ся в на­ли­чии универ­саль­но­го ме­ханиз­ма обу­чения. Вме­сте с тем, в ря­де экстре­маль­ных за­дач об­на­ру­жения ме­тод сравнения с эта­ло­ном оста­ет­ся до­минирую­щим.


Яр­ким при­ме­ром слу­жат систе­мы на­ви­га­ции и на­ве­дения кры­ла­тых ра­кет по рель­е­фу ме­ст­но­сти. В ка­че­стве эта­ло­нов ис­поль­зу­ют­ся кар­ты ме­ст­но­сти, изо­бра­жения ко­то­рых пред­ва­ри­тель­но за­но­сят­ся в па­мять бор­то­во­го ком­пь­ю­те­ра. В хо­де по­ле­та ви­део­систе­ма ра­ке­ты сканиру­ет ме­ст­ность, а ком­пь­ю­тер оценива­ет кор­ре­ля­цию те­ку­ще­го изо­бра­жения ме­ст­но­сти с на­бо­ром эта­ло­нов и кор­рек­ти­ру­ет по­ло­жение ра­ке­ты в про­стран­стве от­но­си­тель­но рас­чет­ной тра­ек­то­рии по­ле­та. В систе­му на­ве­дения кры­ла­той ра­ке­ты вхо­дит элек­трон­но-оп­ти­че­ская кор­ре­ля­ци­он­ная под­систе­ма, ко­то­рая вы­да­ет ре­зуль­та­ты в ре­аль­ном вре­мени. Циф­ро­вые кар­ти­ны-эта­ло­ны пред­ва­ри­тель­но от­сня­тых рай­онов ме­ст­но­сти по­сле­до­ва­тель­но вво­дят­ся в элек­трон­но-оп­ти­че­ский кор­ре­ля­тор по ме­ре пе­ре­ме­щения ра­ке­ты вдоль тра­ек­то­рии по­ле­та. Бор­то­вой ком­пь­ю­тер оценива­ет ве­ли­чи­ны кор­ре­ля­ции и про­кла­ды­ва­ет курс ра­ке­ты по рель­е­фу ме­ст­но­сти. Нуж­но от­ме­тить, что в со­от­вет­ствии со свой­ства­ми зри­тель­но­го воспри­ятия для улуч­шения ре­зуль­та­тов сравнения при­ме­ня­ет­ся кор­ре­ля­ция по кон­ту­рам рель­е­фа ме­ст­но­сти. На рис. 1 пред­став­лен при­мер фо­то­гра­фи­че­ской кар­ты ме­ст­но­сти и её кон­тур­ное (гра­ди­ент­ное) пред­став­ление. Кон­тур­ное пред­став­ление мо­жет быть по­лу­че­но с по­мо­щью, на­при­мер, диф­фе­рен­ци­аль­но­го опе­ра­то­ра Со­бе­ля или с по­мо­щью вы­со­ко­частот­ной фильт­ра­ции ви­део­дан­ных.

Ра­зу­ме­ет­ся, на дан­ном уро­ке мы по­ста­вим пе­ред со­бой бо­лее скром­ную и ку­да бо­лее мир­ную за­да­чу, а имен­но: реа­ли­зу­ем об­на­ру­жи­тель-кор­ре­ля­тор для про­стых сцен. Для нас бу­дет ва­жен прин­цип по­строения та­ко­го об­на­ру­жи­те­ля на прак­ти­че­ском уровне с по­мо­щью про­грамм­ных средств язы­ка Perl.

Об­на­ру­жение, раз­ли­чение, опознавание

Джон­сон [J. Johnson], ис­сле­дуя влияние ви­део­систем на воспри­ятие во­ен­ных объ­ек­тов, уста­но­вил три основ­ных уров­ня ви­дения, ха­рак­те­ри­зую­щих про­цесс ото­жде­ств­ления изо­бра­жений дан­ных объ­ек­тов: об­на­ру­жение (по­яв­ление объ­ек­та в по­ле зрения), раз­ли­чение (раз­биение на клас­сы: тан­ки, ав­то­мо­би­ли) и опо­зна­вание ти­па объ­ек­та (на­при­мер, на­блю­да­ет­ся танк t-72). На рис. 2 ил­лю­ст­ри­ру­ет­ся кри­те­рий Джон­со­на, где сле­ва по­ка­за­ны пе­рио­ды строч­ной раз­верт­ки те­ле­ви­зи­он­ной систе­мы на­блю­дения, а спра­ва – кон­тур­ное изо­бра­жение ав­то­мо­би­ля. Та­ким об­ра­зом, Джон­сон уста­но­вил, что чис­ло по­лу­пе­рио­дов раз­верт­ки, при­хо­дя­щих­ся на минималь­ный раз­мер объ­ек­та, долж­но быть рав­но 2 (+1/-0.5) для об­на­ру­жения (рис. 2а), 8 (+1.6/-0.4) для клас­си­фи­ка­ции (рис. 2б) и 12.8 (+3.2/-2.8) для опо­зна­вания (рис. 2в).


Сле­до­ва­тель­но, ес­ли мы уста­но­вим, что в изо­бра­жении име­ют­ся тан­ки и ав­то­ма­ши­ны, то мы ре­шим за­да­чу об­на­ру­жения. Ес­ли нам уда­ст­ся от­де­лить изо­бра­жения тан­ков от изо­бра­жений ав­то­мо­би­лей, то мы ре­шим за­да­чу клас­си­фи­ка­ции. И, на­конец, ес­ли мы смо­жем ска­зать, что танк на изо­бра­жении яв­ля­ет­ся россий­ским т-72, а не аме­ри­кан­ским M1A2, мы ре­шим за­да­чу опо­зна­вания ти­па.

Зна­чи­мость кон­ту­ров

Из ис­сле­до­ваний зри­тель­но­го ана­ли­за­то­ра из­вест­но, что основ­ную ин­фор­ма­цию о зри­тель­ных об­раз­ах несут кон­ту­ры объ­ек­тов и рез­кие пе­ре­па­ды яр­ко­сти на границах по­следних. Про­стей­шей про­це­ду­рой для вы­де­ления кон­ту­ров объ­ек­тов яв­ля­ет­ся вы­чис­ление раз­но­стей зна­чений яр­ко­сти ме­ж­ду со­седними эле­мен­та­ми изо­бра­жения, что пред­став­ля­ет со­бой про­це­ду­ру диф­фе­рен­ци­ро­вания. Чем боль­ше бу­дут эти раз­но­сти, тем сильнее про­явят­ся кон­ту­ры объ­ек­тов в изо­бра­жении. Наи­боль­шим зна­чениям раз­но­стей бу­дут со­от­вет­ство­вать мак­си­му­мы гра­ди­ен­та яр­ко­сти. Эк­ви­ва­лен­том про­стран­ствен­но­му диф­фе­рен­ци­ро­ванию в плоско­сти изо­бра­жения бу­дет при­менение гра­ди­ент­но­го фильт­ра в частот­ной об­ласти. При­ме­ром та­ко­го фильт­ра мо­жет слу­жить фор­му­ла:

H(u,v) = u2 + v2,

где u, v – про­стран­ствен­ные часто­ты. Дей­ствие дан­но­го фильт­ра как раз и пред­став­ле­но на рис. 1а. Про­грамм­ную реа­ли­за­цию гра­ди­ент­но­го фильт­ра мы рас­смот­рим чуть ниже, со­вме­ст­но с вы­полнением про­це­ду­ры сравнения с эта­ло­ном, ко­то­рая по­лу­чи­ла на­звание со­гла­со­ван­ной фильт­ра­ции.

Со­гла­со­ван­ная фильт­ра­ция

Со­гла­со­ван­ный фильтр был впер­вые ис­поль­зо­ван для об­на­ру­жения сиг­на­лов в ра­дио­ло­ка­ции. В од­ной из пре­ды­ду­щих ста­тей цик­ла (LXF135) мы рас­смот­ре­ли про­це­ду­ру фильт­ра­ции для по­вы­шения ка­че­ства фо­то­изо­бра­жения. Для это­го мы сфор­ми­ро­ва­ли фильтр H(u,v) и ум­но­жи­ли его на спектр фо­то­изо­бра­жения S(u,v). На фор­маль­ном уровне, с по­зи­ции тео­рии линей­ной фильт­ра­ции, как фильтр для по­вы­шения ка­че­ства, так и фильтр для со­гла­со­ван­ной фильт­ра­ции рав­но­цен­ны. Основ­ное от­ли­чие со­гла­со­ван­но­го фильт­ра со­сто­ит в том, что его им­пульс­ная ха­рак­те­ри­сти­ка h(x,y) долж­на быть со­гла­со­ва­на и со­пря­же­на с функ­ци­ей объ­ек­та s(x,y):

h(x,y) = s(x0-x, y0-y).  (1)

Бу­дем пе­ре­ме­щать от­клик h(x,y) от­но­си­тель­но объ­ек­та и вы­чис­лять кор­ре­ля­цию ме­ж­ду дву­мя эти­ми функ­ция­ми. Оче­вид­но, что мак­си­мум кор­ре­ля­ции бу­дет достиг­нут в мо­мент их со­вме­щения. Та­кая про­це­ду­ра по­лу­чи­ла на­звание сверт­ки двух функ­ций. Функ­ция со­гла­со­ван­но­го фильт­ра рас­счи­ты­ва­ет­ся как пре­об­ра­зо­вание Фу­рье функ­ции от­кли­ка (1):

H(u,v) = S*(u,v)exp{-j(u·x0 + v·y0)},  (2)

где S(u,v) – спектр эта­ло­на (1), j – мнимая единица, а знак * обо­зна­ча­ет ком­плекс­ное со­пря­жение. Как мы ви­дим, функ­ция со­гла­со­ван­но­го фильт­ра яв­ля­ет­ся ком­плекс­ной, и по­это­му в про­грамм­ной реа­ли­за­ции мы долж­ны пре­ду­смот­реть пе­ре­мно­жение ком­плекс­ных чи­сел. Ниже пред­став­лен про­грамм­ный код, реа­ли­зую­щий со­гла­со­ван­ную фильт­ра­цию с по­мо­щью гра­ди­ент­но­го со­гла­со­ван­но­го фильт­ра. Вход­ное изо­бра­жение пред­ва­ри­тель­но за­но­сит­ся в дву­мер­ный мас­сив @re. Раз­мер­ность вход­но­го изо­бра­жения рав­на N × N то­чек и оп­ре­де­ля­ет­ся в про­грам­ме па­ра­мет­ром $N, а раз­мер­ность эта­ло­на s(x,y) за­да­ет­ся па­ра­мет­ра­ми $sx по ши­рине и $sy по вы­со­те.

 for($j=0;$j<$N; $j++){
 for($i=0;$i<$N; $i++){
    $im[$i][$j] = 0;
    $re1[$i][$j] = 0;
    $im1[$i][$j] = 0;
 }}
 &d2cdft( \@re,\@im,\$N,\$PI );
 for($j=0;$j<$sy; $j++){
 for($i=0;$i<$sx; $i++){
    $re1[$i][$j] = $s[$i][$j];
 }}
 &d2cdft( \@re1,\@im1,\$N,\$PI );
 $N2 = int($N/2);
 for($j=0;$j<$N; $j++){
    $u = $j;
    if($j > $N2) { $u = $j - $N;}
    for($i=0;$i<$N; $i++){
       $v = $i;
       if($i > $N2) { $v = $i - $N;}
       $gr = ($u**2 + $v**2)/$N;
       $Ure = $gr*( $re[$i][$j]*$re1[$i][$j] + $im[$i][$j]*$im1[$i][$j] );
       $im = $gr*( $im[$i][$j]*$re1[$i][$j] - $re[$i][$j]*$im1[$i][$j] );
       $re[$i][$j] = $Ure;
       $im[$i][$j] = $im;
 }}

По­сле пре­об­ра­зо­вания Фу­рье вход­но­го изо­бра­жения @re эле­мен­ты мас­си­ва $re[$i][$j] и $im[$i][$j] бу­дут пред­став­лять со­бой ве­ще­ствен­ную и мнимую части спек­тра ис­ход­но­го изо­бра­жения. Пре­об­ра­зо­вание Фу­рье осу­ще­ств­ля­ет­ся с по­мо­щью под­про­грам­мы d2cdft() бы­ст­ро­го пре­об­ра­зо­вания Фу­рье, опи­сание ко­то­рой бы­ло да­но в пре­ды­ду­щих стать­ях цик­ла (LXF135).

Ком­плекс­ные эле­мен­ты мас­си­вов $re1[$i][$j] и $im1[$i][$j] со­гла­со­ван­но­го фильт­ра так­же по­лу­че­ны с по­мо­щью под­про­грам­мы d2cdft(), ко­то­рая при­ме­ня­ет­ся к функ­ции эта­ло­на. Пе­ре­мно­жение эле­мен­тов мас­си­ва спек­тра ис­ход­но­го изо­бра­жения и эле­мен­тов со­гла­со­ван­но­го фильт­ра осу­ще­ств­ля­ет­ся по пра­ви­лу ум­но­жения двух ком­плекс­ных чи­сел. Ре­зуль­тат пе­ре­мно­жения ком­плекс­ных чи­сел ум­но­жа­ет­ся на зна­чения функ­ции гра­ди­ент­но­го фильт­ра $gr, вы­чис­ляе­мой в ка­ж­дой точ­ке спек­тра как сум­мы квад­ра­тов про­стран­ствен­ных частот (транс­фор­мант) $u и $v.

Что­бы по­лу­чить ре­зуль­ти­рую­щие кор­ре­ля­ци­он­ные от­кли­ки, необ­хо­ди­мо вы­полнить об­рат­ное пре­об­ра­зо­вание Фу­рье с по­мо­щью под­про­грам­мы d2cdfti() в со­от­вет­ствии с про­грамм­ным ко­дом:


 &d2cdfti( \@re,\@im,\$N,\$PI );
 $max = 0;
 for($j=0;$j<$N; $j++){
 for($i=0;$i<$N; $i++){
      if( $re[$i][$j] > $max){ $max = abs($re[$i][$j]);}
 }}
 for($j=0;$j<$N; $j++){
 for($i=0;$i<$N; $i++){
      $out[$i][$j] = abs(255*($re[$i][$j]/$max));
 }}

Дву­мер­ные мас­си­вы @re и @im, на вхо­де под­про­грам­мы d2cdfti(), яв­ля­ют­ся ре­зуль­та­том ум­но­жения спек­тра вход­но­го изо­бра­жения на со­гла­со­ван­ный фильтр, как это бы­ло по­ка­за­но в пре­ды­ду­щем фраг­мен­те ко­да. На вы­хо­де под­про­грам­мы d2cdfti() дву­мер­ный мас­сив @re бу­дет пред­став­лять со­бой ре­зуль­тат кор­ре­ля­ции эта­ло­на с вход­ным изо­бра­жением. Вы­ход­ное кор­ре­ля­ци­он­ное по­ле запи­сы­ва­ет­ся в мас­сив @out, эле­мен­ты ко­то­ро­го $out[$i][$j] нор­ми­ру­ют­ся к мак­си­маль­но­му зна­чению $max и пред­став­ля­ют­ся в ви­де чи­сел от 0 до 255. В ка­че­стве при­ме­ра рас­смот­рим об­на­ру­жение сим­во­лов на но­мер­ных зна­ках ав­то­мо­би­лей. На рис. 3 пред­став­ле­но ис­ход­ное изо­бра­жение и ре­зуль­та­ты об­на­ру­жения циф­ры 3 на но­мер­ном зна­ке ав­то­ма­ши­ны с по­мо­щью со­гла­со­ван­ной гра­ди­ент­ной фильт­ра­ции, про­грамм­ную реа­ли­за­цию ко­то­рой мы рас­смот­ре­ли. Эта­ло­ном для об­на­ру­жения слу­жит дво­ич­ное изо­бра­жение циф­ры 3.

Раз­мер­ность ис­ход­но­го изо­бра­жения на рис. 3а со­став­ля­ет 1024 × 1024 от­сче­тов. Раз­мер­ность эта­ло­на рав­на sx=19 от­сче­там по ши­рине и sy=40 от­сче­там по вы­со­те. От­ме­тим, что пи­ки мак­си­му­мов кор­ре­ля­ции бу­дут сме­ще­ны от­но­си­тель­но объ­ек­тов на по­ло­ви­ну раз­ме­ров эта­ло­на, то есть на ве­ли­чи­ну sx/2 по ши­рине и sy/2 по вы­со­те.

Сде­ла­ем ак­цент на од­ном важ­ном мо­мен­те со­гла­со­ван­ной фильт­ра­ции. Фильтр (2) яв­ля­ет­ся про­стран­ствен­но-ин­ва­ри­ант­ным, или, ина­че го­во­ря, его дей­ствие спра­вед­ли­во для все­го вход­но­го изо­бра­жения. Это вы­те­ка­ет из фор­му­лы (1) для сверт­ки, в ко­то­рой опе­ра­ция сверт­ки вход­но­го изо­бра­жения s(x,y) с от­кли­ком h(x,y) осу­ще­ств­ля­ет­ся по всей плоско­сти при пе­ре­ме­щении эта­ло­на вдоль осей x0‑x и y0‑y. По этой при­чине со­гла­со­ван­ный фильтр обес­пе­чит об­на­ру­жение сра­зу несколь­ких (мно­же­ства) объ­ек­тов, рас­по­ло­жен­ных про­из­воль­ным об­ра­зом во вход­ном изо­бра­жении.

Во­дя­ные зна­ки

Про­бле­ма со­блю­дения ав­тор­ских прав при раз­ме­щении фо­то­гра­фий в се­ти Ин­тернет или за­да­ча по­иска изо­бра­жений с по­мо­щью по­иско­вых систем так или ина­че тре­бу­ют со­постав­ления мно­же­ства фо­то­изо­бра­жений с эта­ло­ном или опи­санием изо­бра­жения. В этом слу­чае, со­гла­со­ван­ная фильт­ра­ция мо­жет рас­смат­ри­вать­ся как один из ин­ст­ру­мен­тов ре­шения по­доб­ных за­дач.

Наи­бо­лее по­пу­ляр­ные по­иско­вые систе­мы в на­стоя­щее вре­мя пре­достав­ля­ют воз­мож­ность по­иска изо­бра­жений на осно­ве их тек­сто­во­го опи­сания, со­дер­жа­ще­го­ся в тэ­гах ко­да HTML-до­ку­мен­та. Со­от­вет­ствен­но, сте­пень ре­ле­вант­но­сти по­иско­вым за­про­сам мо­жет не со­от­вет­ство­вать изо­бра­жениям, пре­достав­ляе­мым в вы­да­че ре­зуль­та­тов по­иска. Поль­зо­ва­те­лям при­хо­дит­ся про­смат­ри­вать мно­же­ство страниц, что­бы най­ти тре­буе­мое изо­бра­жение.

Бо­лее про­дви­ну­тые (но менее из­вест­ные) ре­сур­сы пред­ла­га­ют сер­ви­сы, ис­поль­зую­щие ме­то­ды рас­по­зна­вания об­ра­зов, на­прав­лен­ные на клас­си­фи­ка­цию объ­ек­тов в изо­бра­жении. Од­на­ко по­иск циф­ро­вых фо­то­гра­фий по объ­ек­там, при­сут­ствую­щим в сним­ках, по­ка да­лёк от удов­ле­тво­ри­тель­но­го ре­шения, ес­ли в ка­че­стве оп­ти­му­ма взять наш зри­тель­ный ана­ли­за­тор. И ви­ной это­му не столь­ко ал­го­рит­мы рас­по­зна­вания, сколь­ко слож­ность са­мой про­бле­мы ма­шин­но­го рас­по­зна­вания об­ра­зов.

Одним из ком­про­мис­сов в ре­шении за­да­чи по­иска фо­то­гра­фий в се­ти Ин­тернет мо­жет по­слу­жить спо­соб клас­си­фи­ка­ции изо­бра­жений с ис­поль­зо­ванием ви­ди­мых во­дя­ных зна­ков. Нанесение их на изо­бра­жение уже сей­час при­ме­ня­ет­ся во мно­гих ре­сур­сах ми­ро­вой се­ти. Как пра­ви­ло, ви­ди­мой мет­кой слу­жит ад­рес сай­та в се­ти Ин­тернет, ло­го­тип ре­сур­са или неко­то­рая от­вле­чен­ная мет­ка ти­па зна­ка ©. При­ме­ром нанесения про­зрач­ных ме­ток мо­гут слу­жить кар­ты по­иско­вой систе­мы Google, в ото­бра­жае­мое по­ле ко­то­рых встраи­ва­ют­ся во­дя­ные зна­ки с про­зрач­ной осно­вой. По­про­бу­ем и мы реа­ли­зо­вать по­доб­ный под­ход. При этом сна­ча­ла встро­им ви­ди­мые во­дя­ные зна­ки в про­из­воль­ное изо­бра­жение, а за­тем по­пы­та­ем­ся об­на­ру­жить их с по­мо­щью про­грам­мы, при­ве­ден­ной вы­ше. Про­грамм­ный код для встраи­вания сим­во­ла © в фо­то­изо­бра­жение бу­дет та­ким:


 $op = .075;
 $dh0 = 64;
 $dw0 = 64;
 $dh = 128;
 $dw = 128;
 $L = $N/128;
 for($h=0;$h<$L; $h++){
    $m = $h*$dh + $dh0;
    for($w=0;$w<$L; $w++){
       $n = $w*$dw + $dw0;
       for($j=0;$j<$sy;$j++){
          for($i=0;$i<$sx;$i++){
             $sum = $re[$i+$n][$j+$m] + $op*$re1[$i][$j];
             if($sum > 255){ $sum = 255;}
              $re[$i+$n][$j+$m]=$sum;
          }}
 }}

Вход­ное и вы­ход­ное изо­бра­жения по­ме­ща­ют­ся в дву­мер­ный мас­сив @re. Па­ра­метр $op оп­ре­де­ля­ет непро­зрач­ность во­дя­но­го зна­ка от­но­си­тель­но ис­ход­но­го фо­то­изо­бра­жения и ра­вен в дан­ном слу­чае 7,5 %. Па­ра­мет­ры $dh0 и $dw0 да­ют на­чаль­ные сме­щения (от­сту­пы) по вы­со­те и ши­рине фо­то­изо­бра­жения, со­от­вет­ствен­но. Зна­чения па­ра­мет­ров $dh и $dw за­да­ют шаг встраи­вания во­дя­ных зна­ков по вы­со­те и ши­рине сним­ка. Па­ра­метр $L оп­ре­де­ля­ет чис­ло встраи­вае­мых ме­ток как по вы­со­те, так и по ши­рине фо­то­изо­бра­жения. С по­мо­щью па­ра­мет­ров $sy и $sx за­да­ют­ся раз­ме­ры встраи­вае­мо­го зна­ка ©, а так же раз­ме­ры эта­ло­на © на эта­пе об­на­ру­жения. Зна­чение 255 слу­жит ог­раничи­те­лем на слу­чай воз­мож­но­го пре­вы­шения зна­чения яр­ко­сти. На рис. 4 пред­став­лен ре­зуль­тат встраи­вания про­зрач­но­го зна­ка ©. Во­дя­ные зна­ки рав­но­мер­но раз­ме­ще­ны по по­лю изо­бра­жения, об­ра­зуя мат­ри­цу, имею­щую во­семь ря­дов и во­семь столб­цов.


На рис. 5 пред­став­ле­ны ре­зуль­та­ты об­на­ру­жения иско­мых сим­во­лов ©. В ка­че­стве эта­ло­на ис­поль­зо­ва­лось дво­ич­ное изо­бра­жение зна­ка ©.

Ана­лиз по­лу­чен­ных ре­зуль­та­тов по­зво­ля­ет нам сде­лать вы­вод, что при про­зрач­но­сти во­дя­ных зна­ков, рав­ной 92,5 %, ошиб­ки об­на­ру­жения (ошиб­ки I ро­да) от­сут­ству­ют, а так­же от­сут­ству­ют ошиб­ки лож­но­го об­на­ру­жения, то есть II ро­да. Ес­ли мы бу­дет уве­ли­чи­вать про­зрач­ность во­дя­ных зна­ков, тем са­мым умень­шая их ви­ди­мость, то неми­нуе­мо поя­вят­ся ошиб­ки лож­но­го об­на­ру­жения, а за­тем и ошиб­ки I ро­да. Уро­вень возник­но­вения оши­бок за­ви­сит от кон­крет­но­го вход­но­го изо­бра­жения. Для фо­то­изо­бра­жения на рис. 4 ошиб­ки II ро­да на­чи­на­ют по­яв­лять­ся при ве­ли­чине про­зрач­но­сти во­дя­ных зна­ков, рав­ной 95 %, а ошиб­ки I ро­да – при 97 %.

В нашей ста­тье мы про­де­мон­ст­ри­ро­ва­ли воз­мож­но­сти Perl по ре­шению при­клад­ных за­дач об­на­ру­жения объ­ек­тов. От­ме­тим, что циф­ро­вые ме­то­ды в це­лом не обес­пе­чи­ва­ют вы­со­кой ско­ро­сти рас­че­та кор­ре­ля­ции дву­мер­ных мас­си­вов из-за боль­шого объ­е­ма вы­чис­лений. И чем боль­ше раз­мер вход­ных изо­бра­жений, тем ниже эта ско­рость. Имен­но по­это­му в систе­мах на­ви­га­ции крыла­тых ра­кет при­ме­ня­ют­ся оп­ти­че­ские кор­ре­ля­то­ры, упо­мя­нутые в начале. Но гиб­кость и опе­ра­тив­ность про­грам­ми­ро­ва­ния на Perl, в со­че­та­нии с мощью ма­те­ма­ти­че­ских мо­ду­лей Perl, позволяют соз­давать высокоэф­фек­тив­ные ал­го­рит­мы об­ра­бот­ки ви­део­дан­ных.

Персональные инструменты
купить
подписаться
Яндекс.Метрика