<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF135%3APerl</id>
		<title>LXF135:Perl - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF135%3APerl"/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF135:Perl&amp;action=history"/>
		<updated>2026-05-14T03:12:41Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF135:Perl&amp;diff=12936&amp;oldid=prev</id>
		<title>Crazy Rebel в 10:05, 3 ноября 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF135:Perl&amp;diff=12936&amp;oldid=prev"/>
				<updated>2011-11-03T10:05:22Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 10:05, 3 ноября 2011&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==''Perl'': По­вы­сим ка­че­ст­во фо­то==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==''Perl'': По­вы­сим ка­че­ст­во фо­то==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Цикл/Perl}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Цикл/Perl}} &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Категория:Учебники]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: '''Часть 2''': Боль­шин­ст­во, на­вер­ное, возь­мет для этих це­лей гра­фи­че­ский ре­дак­тор, но '''Ми­ха­ил Смир­нов''' про­де­ла­ет все сам, с по­мо­щью ''Perl'' и из­ряд­ной до­ли ма­те­ма­ти­ки.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: '''Часть 2''': Боль­шин­ст­во, на­вер­ное, возь­мет для этих це­лей гра­фи­че­ский ре­дак­тор, но '''Ми­ха­ил Смир­нов''' про­де­ла­ет все сам, с по­мо­щью ''Perl'' и из­ряд­ной до­ли ма­те­ма­ти­ки.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF135:Perl&amp;diff=12695&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF135:Perl&amp;diff=12695&amp;oldid=prev"/>
				<updated>2011-10-06T12:12:03Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''''Math::FFT''' Perl'' и ма­те­ма­ти­че­ские пре­об­ра­зо­ва­ния «вы­тя­нут» без­на­деж­ные с виду сним­ки&lt;br /&gt;
&lt;br /&gt;
==''Perl'': По­вы­сим ка­че­ст­во фо­то==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/Perl}}&lt;br /&gt;
&lt;br /&gt;
: '''Часть 2''': Боль­шин­ст­во, на­вер­ное, возь­мет для этих це­лей гра­фи­че­ский ре­дак­тор, но '''Ми­ха­ил Смир­нов''' про­де­ла­ет все сам, с по­мо­щью ''Perl'' и из­ряд­ной до­ли ма­те­ма­ти­ки.&lt;br /&gt;
&lt;br /&gt;
Наи­бо­лее важ­ной ха­рак­те­ри­сти­кой циф­ро­вой фо­то- и ви­део­техники яв­ля­ет­ся раз­ре­шаю­щая спо­соб­ность пре­об­ра­зо­ва­те­лей све­та в элек­три­че­ский сиг­нал. Чем она луч­ше, тем бо­лее мел­кие де­та­ли мы мо­жем на­блю­дать в изо­бра­жении. В со­вре­мен­ных бы­то­вых циф­ро­вых фо­то- и ви­деоуст­рой­ствах та­ки­ми пре­об­ра­зо­ва­те­ля­ми яв­ля­ют­ся по­лу­про­воднико­вые при­бо­ры с за­ря­до­вой свя­зью (ПЗС), ко­то­рые не так уж дав­но при­шли на сме­ну фо­то­плен­ке и ва­ку­ум­ным пре­об­ра­зо­ва­те­лям све­та. Основ­ное пре­иму­ще­ство ПЗС пе­ред фо­то­плен­кой со­сто­ит в воз­мож­но­сти ре­ги­ст­ри­ро­вать зна­чи­тель­но боль­ший диа­па­зон внешней осве­щен­но­сти или, ина­че го­во­ря, по­лу­чать зна­чи­тель­но боль­шее ко­ли­че­ство гра­да­ций по­лу­то­нов в изо­бра­жении. Пре­иму­ще­ство пе­ред ва­ку­ум­ной техникой, пре­ж­де все­го, ха­рак­те­ри­зу­ет­ся прак­ти­че­ски сто­про­цент­ным исклю­чением гео­мет­ри­че­ских иска­жений. Сла­бым ме­стом пер­вых ПЗС-раз­ра­бо­ток яв­ля­лось низ­кое оп­ти­че­ское раз­ре­шение, что бы­ло свя­за­но с круп­ным раз­ме­ром фо­то­чув­стви­тель­ных яче­ек ПЗС. Чем мень­ше гео­мет­ри­че­ский раз­мер яче­ек и чем боль­ше ко­ли­че­ство та­ких яче­ек в чи­пе ПЗС, тем луч­шее оп­ти­че­ское раз­ре­шение мож­но по­лу­чить. Ко­ли­че­ство яче­ек по го­ри­зон­та­ли и вер­тика­ли оп­ре­де­ля­ют раз­мер циф­ро­во­го изо­бра­жения в пик­се­лях по ши­рине и вы­со­те.&lt;br /&gt;
&lt;br /&gt;
В пер­вых раз­ра­бот­ках, осо­бен­но фо­то­техники, при­ме­ня­лась про­це­ду­ра искусствен­но­го уве­ли­чения ко­ли­че­ства пик­се­лей с по­мо­щью ин­тер­по­ля­ции. Эта про­це­ду­ра по­лу­чи­ла на­звание «элек­трон­но­го зу­ма», при­менение ко­то­ро­го мо­жет соз­да­вать толь­ко ил­лю­зию улуч­шения ка­че­ства изо­бра­жения. Вме­сте с тем, та­кая чи­сло­вая ха­рак­те­ри­сти­ка, как ко­ли­че­ство пик­се­лей, да­ет лишь об­щее пред­став­ление о ка­че­стве и ре­аль­ном оп­ти­че­ском раз­ре­шении. Что­бы бо­лее точ­но ра­зо­брать­ся в этом во­про­се, нуж­но при­влечь к рас­смот­рению функ­цио­наль­ную ха­рак­те­ри­сти­ку – пе­ре­да­точ­ную функ­цию ПЗС.&lt;br /&gt;
&lt;br /&gt;
===Немно­го тео­рии===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_68_1.jpg|300px|Рис. 1]] Рис. 1. Функ­ция пе­ре­да­чи мо­ду­ля­ции ка­ме­ры на ПЗС.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Пе­ре­да­точ­ная ха­рак­те­ри­сти­ка уст­рой­ства на ПЗС – сканера, циф­ро­во­го фо­то­ап­па­ра­та или ви­део­ка­ме­ры – пол­но­стью опи­сы­ва­ет­ся функ­ци­ей пе­ре­да­чи мо­ду­ля­ции (ФПМ), ко­то­рая ха­рак­те­ри­зу­ет па­дение кон­тра­ста си­ну­сои­даль­ных со­став­ляю­щих сиг­на­ла изо­бра­жения в об­ласти про­стран­ствен­ных частот. При оцен­ке пе­ре­да­точ­ной ха­рак­те­ри­сти­ки этих уст­ройств од­но­вре­мен­но бу­дет учи­ты­вать­ся и ФПМ оп­ти­че­ско­го объ­ек­ти­ва, ко­то­рый фо­ку­си­ру­ет изо­бра­жение в плоско­сти чи­па ПЗС. В оп­ти­ке про­стран­ствен­ные часто­ты оп­ре­де­ля­ют­ся как чис­ло линий на мил­ли­метр, то есть ве­ли­чи­ной [1/мм]. В ка­че­стве при­ме­ра на рис. 1 пред­став­ле­на ти­пич­ная кри­вая ФПМ ка­ме­ры на ПЗС.&lt;br /&gt;
&lt;br /&gt;
ФПМ ха­рак­те­ри­зу­ет связь ме­ж­ду ис­ход­ным объ­ек­том и его изо­бра­жением. Рас­смот­рим в ка­че­стве объ­ек­та си­ну­сои­даль­ное рас­пре­де­ление кон­тра­ста, по­ка­зан­ное на рис. 2а. Часто­та си­ну­сои­ды рав­на 20 1/мм, то есть на од­ном мил­ли­мет­ре ук­ла­ды­ва­ет­ся 20 пе­рио­дов си­ну­сои­ды.&lt;br /&gt;
&lt;br /&gt;
На рис. 2б и 2в пред­став­ле­ны се­чения си­ну­сои­даль­но­го объ­ек­та. Раз­мах си­ну­сои­ды на рис. 2б ха­рак­те­ри­зу­ет кон­траст объ­ек­та на вхо­де уст­рой­ства. На вы­хо­де оп­ти­ко-элек­трон­но­го уст­рой­ства изо­бра­жение си­ну­сои­ды бу­дет ха­рак­те­ри­зо­вать­ся се­чением, по­ка­зан­ным на рис. 2в. Та­ким об­ра­зом, вид­но, что ФПМ на часто­те 20 1/мм по­ка­зы­ва­ет па­дение сиг­на­ла си­ну­сои­ды с ве­ли­чи­ны 1.0 на вхо­де уст­рой­ства до ве­ли­чи­ны при­мер­но 0.18 на его вы­хо­де.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_69_1.jpg|300px|Рис. 2]] Рис. 2. При­мер син­те­за изо­бра­же­ния.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF135_69_2.jpg|300px|Рис. 3]] Рис. 3. Край по­лу­плос­ко­сти: а) тес­то­вое изо­бра­же­ние края по­лу­плос­ко­сти, б) се­че­ние края по­лу­плос­ко­сти, в) функ­ция рас­сея­ния ли­нии, г) ФПМ уст­рой­ст­ва на ПЗС, д) де­фо­ку­си­ро­воч­ная кри­вая.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Для по­лу­чения зна­чений ФПМ на всех про­стран­ствен­ных часто­тах по­тре­бу­ет­ся мно­же­ство си­ну­сои­даль­ных объ­ек­тов с раз­лич­ны­ми часто­та­ми. Од­на­ко в этом нет необ­хо­ди­мо­сти, ес­ли восполь­зо­вать­ся объ­ек­том в ви­де про­тя­жен­но­го рез­ко­го скач­ка кон­тра­ста, по­лу­чив­ше­го на­звание «края по­лу­плоско­сти». Изо­бра­жение края по­лу­плоско­сти по­ка­за­но на рис. 3а. Что­бы по­лу­чить иско­мую ФПМ, необ­хо­ди­мо вы­полнить диф­фе­рен­ци­ро­вание края по­лу­плоско­сти (по нор­ма­ли к краю), а за­тем сде­лать пре­об­ра­зо­вание Фу­рье.&lt;br /&gt;
&lt;br /&gt;
По­сле­до­ва­тель­ность и ре­зуль­та­ты пре­об­ра­зо­ваний ил­лю­ст­ри­ру­ют­ся на рис. 3. На рис. 3б по­ка­за­но од­но из се­чений края по­лу­плоско­сти. Что­бы снизить влияние шу­мов ПЗС, пе­ред диф­фе­рен­ци­ро­ванием пред­ва­ри­тель­но вы­пол­ня­ет­ся усреднение се­чений края по­лу­плоско­сти. Сум­ми­ро­вание m се­чений края по­лу­плос­ко­сти обес­пе­чи­ва­ет по­вы­шение от­но­шения сиг­нал-шум в ко­рень из ''m'' раз. Ре­зуль­тат диф­фе­рен­ци­ро­вания усреднен­но­го се­чения края по­лу­плоско­сти по­ка­зан на рис. 3в – по­лу­чен­ное на­ми рас­пре­де­ление на­зы­ва­ет­ся функ­ци­ей рас­сеяния линии. Для оп­ре­де­ления ФПМ оста­ет­ся вы­полнить пре­об­ра­зо­вание Фу­рье функ­ции рас­сеяния и за­тем вы­чис­лить мо­дуль от по­лу­чен­ных ком­плекс­ных ко­эф­фи­ци­ен­тов Фу­рье (рис. 3г). Что­бы оценить ошиб­ку, ко­то­рую вно­сит циф­ро­вая оп­ти­ко-элек­трон­ная систе­ма, по­тре­бу­ет­ся вы­полнить вы­чи­тание по­лу­чен­ной на­ми ФПМ ''H(v)'' из так на­зы­вае­мой ди­фрак­ци­он­ной ФПМ ''Ĥ(v)'', ко­то­рая име­ет мак­си­маль­но дости­жи­мую часто­ту ''vm'':&lt;br /&gt;
&lt;br /&gt;
 U(v) = Ĥ(v) – H(v)&lt;br /&gt;
&lt;br /&gt;
''v'' – про­стран­ствен­ная часто­та. Пре­дель­ная часто­та ди­фрак­ци­он­ной ФПМ оп­ре­де­ля­ет­ся про­стой фор­му­лой ''vm = F/λD'', где ''F'' – фо­кусное рас­стояние объ­ек­ти­ва; ''D'' – диа­метр объ­ек­ти­ва; ''λ'' – дли­на вол­ны све­та, обыч­но принима­ет­ся рав­ной 660 на­но­мет­рам (оран­же­вый цвет).&lt;br /&gt;
&lt;br /&gt;
Ди­фрак­ци­он­ная ФПМ (крас­ная линия на рис. 3г) пред­став­ля­ет со­бой на­клон­ную пря­мую, рав­ную 1 на ну­ле­вой часто­те ''v = 0'' и рав­ную 0 на ди­фрак­ци­он­ной часто­те ''vm''. При­мер раз­но­ст­ной&lt;br /&gt;
ФПМ ''U(v)'' по­ка­зан на рис. 3д. Кри­вая на рис. 3д ха­рак­те­ри­зу­ет ве­ли­чи­ну ошиб­ки пе­ре­да­чи кон­тра­ста, ко­то­рая обу­слов­ле­на ре­аль­ной оп­ти­ко-элек­трон­ной систе­мой на ПЗС. Во мно­гих слу­ча­ях по­доб­ная ошиб­ка свя­за­на с рас­фо­ку­си­ров­кой объ­ек­ти­ва (по­те­рей рез­ко­сти). И дей­стви­тель­но, рас­пре­де­ление на рис. 3д на­по­ми­на­ет де­фо­ку­си­ро­воч­ную кри­вую.&lt;br /&gt;
&lt;br /&gt;
Раз­лич­ные ва­ри­ан­ты на­строй­ки фо­ку­са объ­ек­ти­ва бу­дут, в той или иной сте­пени, при­во­дить к по­те­ре рез­ко­сти. Чем сильнее рас­стро­ен объ­ек­тив, тем боль­ше бу­дут зна­чения раз­но­ст­ной функ­ции&lt;br /&gt;
''U(v)'' и тем ху­же оп­ти­че­ское раз­ре­шение. При этом по пи­ку кри­вой мож­но оценить про­стран­ствен­ную часто­ту ''v'', на ко­то­рой ФПМ име­ет наи­боль­ший гра­ди­ент па­дения кон­тра­ста. Ес­ли не при-нимать в рас­чет шу­мы ка­ме­ры на ПЗС, то наи­боль­шее раз­ре­шение оп­ти­ко-элек­трон­ной систе­мы оп­ре­де­ля­ет­ся со­от­но­шением ''vL=1/2L'', где ''L'' – линей­ный раз­мер ячей­ки ПЗС. Для ре­аль­ных систем уро­вень шу­ма на вы­со­ких часто­тах бу­дет пре­вы­шать сиг­нал изо­бра­жения, и ре­аль­ное пре­дель­ное раз­ре­шение ''vr'' бу­дет зна­чи­тель­но ниже ''vL''.&lt;br /&gt;
&lt;br /&gt;
При­мер ко­да для по­лу­чения иско­мой ФПМ по­ка­зан ниже. Ис­ход­ная мат­ри­ца изо­бра­жения '''B(x,y)''' края по­лу­плоско­сти со­дер­жит­ся в дву­мер­ном мас­си­ве '''@B'''. На­чаль­ная и конеч­ная стро­ки сум­ми­ро­вания за­да­ют­ся па­ра­мет­ра­ми '''$row1''' и '''$row2''', со­от­вет­ствен­но.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
 for($j=$row1;$j&amp;lt;$row2; $j++){&lt;br /&gt;
 for($i=0;$i&amp;lt;$N; $i++){&lt;br /&gt;
		 $g[$i] +=$B[$i][$j];&lt;br /&gt;
 }}	&lt;br /&gt;
 $Nrr=$row2-$row1-1;&lt;br /&gt;
 @g=map($_/$Nrr, @g);&lt;br /&gt;
 for($i=1;$i&amp;lt;$N; $i++){&lt;br /&gt;
   $PSF[$i] = $g[$i] - $g[$i-1];&lt;br /&gt;
 }&lt;br /&gt;
 use Math::FFT;&lt;br /&gt;
 for($i=0;$i&amp;lt;$N;$i++){&lt;br /&gt;
		 $data-&amp;gt;[2*$i]=$PSF[$i];&lt;br /&gt;
		 $data-&amp;gt;[2*$i+1]=0;&lt;br /&gt;
 }&lt;br /&gt;
 $fft = new Math::FFT($data);&lt;br /&gt;
 $coeff = $fft-&amp;gt;cdft();&lt;br /&gt;
 for($i=0;$i&amp;lt;$N;$i++){				&lt;br /&gt;
   $H[$i] = sqrt ( $coeff-&amp;gt;[2*$i]**2 + $coeff-&amp;gt;[2*$i+1]**2 );&lt;br /&gt;
 }	&lt;br /&gt;
 @H=map($_/$H[0], @H);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ре­зуль­тат диф­фе­рен­ци­ро­вания за­но­сит­ся в мас­сив '''@PSF''', ко­то­рый пред­став­ля­ет со­бой функ­цию рас­сеяния линии. Для вы­полнения пре­об­ра­зо­вания Фу­рье восполь­зу­ем­ся ма­те­ма­ти­че­ской биб­лио­&lt;br /&gt;
те­кой ''Perl'' '''Math::FFT''', в ко­то­рой реа­ли­зо­ван ал­го­ритм бы­ст­ро­го пре­об­ра­зо­вания. Од­но­мер­ное пре­об­ра­зо­вание Фу­рье в этой биб­лио­те­ке вы­пол­ня­ет­ся с по­мо­щью под­про­грам­мы '''cdft()'''.&lt;br /&gt;
&lt;br /&gt;
Ре­зуль­тат пре­об­ра­зо­вания Фу­рье за­но­сит­ся в мас­сив ко­эф­фи­ци­ен­тов '''$coeff''', где ко­эф­фи­ци­ен­ты с чет­ным ин­дек­сом со­от­вет­ству­ют ре­аль­ной части, а ко­эф­фи­ци­ен­ты с нечет­ным ин­дек­сом – мнимой части ком­плекс­но­го чис­ла, со­от­вет­ствен­но. Ре­зуль­ти­рую­щая ФПМ за­но­сит­ся в мас­сив '''@H''', зна­чения ко­то­ро­го нор­ми­ру­ют­ся к пер­во­му зна­чению мас­си­ва '''$H[0]''', со­от­вет­ствую­ще­му по­сто­ян­ной со­став­ляю­щей изо­бра­жения. Та­ким об­ра­зом, '''$H[0]=1''', а все осталь­ные зна­чения ФПМ мень­ше единицы.&lt;br /&gt;
&lt;br /&gt;
На рис. 3г, вме­сте с вы­чис­лен­ной на­ми ФПМ, крас­ной линией по­ка­за­на ди­фрак­ци­он­ная оп­ти­че­ская функ­ция. Та­ким об­ра­зом, чем бли­же ФПМ на­ше­го уст­рой­ства к ди­фрак­ци­он­ной функ­ции, тем с бо­лее вы­со­ким ка­че­ством мы смо­жем по­лу­чать на­ши фо­то­изобра­жения.&lt;br /&gt;
&lt;br /&gt;
===Улуч­шение ка­че­ства===&lt;br /&gt;
&lt;br /&gt;
Вы­вод, по­лу­чен­ный на­ми в пре­ды­ду­щем раз­де­ле, по­зво­ля­ет сфор­му­ли­ро­вать под­ход для улуч­шения ка­че­ства фо­то­изо­бра­жений, а имен­но: ком­пен­си­ро­вать па­дение ФПМ на тех часто­тах, где оно вы­ра­жа­ет­ся наи­бо­лее силь­но, и при­бли­зить тем са­мым ФПМ к ди­фрак­ци­он­но­му пре­де­лу. В циф­ро­вой об­ра­бот­ке изо­бра­жений та­кие восста­нав­ли­ваю­щие фильт­ры по­лу­чи­ли на­звание об­рат­ных или ин­верс­ных. Ма­те­ма­ти­че­ски это вы­ра­жа­ет­ся доста­точ­но про­сто, а имен­но: спектр ис­ход­но­го фо­то­изо­бра­жения ''S(v)'' необ­хо­ди­мо ум­но­жить на функ­цию, об­рат­ную ФПМ уст­рой­ства на ПЗС, ко­то­рую мы ранее восста­но­ви­ли из изо­бра­жения края по­лу­плоско­сти. В пред­по­ло­жении, что мощ­ность шу­ма прене­б­ре­­жи­мо ма­ла, спектр восста­нов­лен­но­го изо­бра­жения ра­вен от­но­шению ''S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;(v) = S(v)/H(v)'', то есть функ­ция иде­аль­но­го фильт­ра ''Q(v) = 1/H(v)''. Принимая во внимание шу­мы, ко­то­рые вно­сят­ся лю­бой ре­аль­ной систе­мой, необ­хо­ди­мо най­ти ре­шение для ''Q(v)'' на тех часто­тах ''v &amp;gt; v&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;'', где шум пре­вы­ша­ет сиг­нал. Пре­дель­ная часто­та ''v&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;'' оценива­ет­ся как часто­та, на ко­то­рой дис­пер­сия (энер­гия) шу­ма на­чи­на­ет пре­вы­шать зна­чения ФПМ. Один из ва­ри­ан­тов оп­ти­маль­но­го фильт­ра име­ет вид&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_70_1.jpg|300px|Рис. 4]] Рис. 4. Оп­ти­маль­ный ли­ней­ный фильтр для улуч­ше­ния фо­то­изо­бра­же­ний.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
  Q(v)= [1 + H(v&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]•H(v)/[H(v&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + H(v)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;] (1)&lt;br /&gt;
&lt;br /&gt;
На рис. 4 по­ка­зан ре­зуль­тат рас­че­та фильт­ра по фор­му­ле (1). Ин­верс­ные оп­ти­маль­ные фильт­ры, ис­поль­зую­щие восста­нов­лен­ные ФПМ, обес­пе­чи­ва­ют по­вы­шение кон­тра­стности на тех про­стран­ствен­ных часто­тах, на ко­то­рых это па­дение обу­слов­ле­но ре­аль­ной оп­ти­ко-элек­трон­ной систе­мой. Это основ­ное от­ли­чие восста­нав­ли­ваю­щих фильт­ров от «сле­пых» фильт­ров вы­со­ких частот или опе­ра­то­ров ти­па Со­бе­ля для под­чер­ки­вания границ, при­ме­няе­мых в распространен­ных про­грамм­ных па­ке­тах.&lt;br /&gt;
&lt;br /&gt;
Ал­го­ритм улуч­шения ка­че­ства фо­то­изо­бра­жения с по­мо­щью ин­верс­ной фильт­ра­ции вклю­ча­ет сле­дую­щие эта­пы. На пер­вом эта­пе осу­ще­ств­ля­ет­ся пре­об­ра­зо­вание Фу­рье ис­ход­но­го фо­то­изо­бра­жения ''B(x,y)'' и по­лу­чение спек­тра ''S(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)''. На вто­ром эта­пе фор­ми­ру­ет­ся ин­верс­ный фильтр ''Q(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'', зна­чения ко­то­ро­го ум­но­жа­ют­ся на спектр ''S(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)''. На треть­ем эта­пе вы­пол­ня­ет­ся об­рат­ное пре­об­ра­зо­вание Фу­рье про­из­ве­дения ''S1(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;) = S(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)•Q(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'', ре­зуль­та­том ко­то­ро­го бу­дет яв­лять­ся восста­нов­лен­ное изо­бра­жение ''B1(x,y)''.&lt;br /&gt;
&lt;br /&gt;
Пер­вый и тре­тий эта­пы реа­ли­зу­ют­ся с по­мо­щью стан­дарт­ных под­про­грамм од­но­мер­но­го пре­об­ра­зо­вания Фу­рье мо­ду­ля ''Perl'' '''Math::FFT'''. Дву­мер­ное пре­об­ра­зо­вание Фу­рье по­лу­ча­ет­ся с по­мо­щью по­сле­до­ва­тель­но­го при­менения од­но­мер­но­го пре­об­ра­зо­вания, на­при­мер, к функ­ции изо­бра­жения ''B(x,y)'' сна­ча­ла по стро­кам, а за­тем по столб­цам мат­ри­цы. От­ме­тим, что пре­об­ра­зо­ванию под­вер­га­ют­ся RGB-ком­понен­ты цвет­но­го изо­бра­жения по от­дель­но­сти. В на­ших при­ме­рах ис­поль­зу­ет­ся ком­понен­та '''Blue''' ис­ход­но­го RGB-изо­бра­жения. Клю­че­вым эта­пом пре­об­ра­зо­вания яв­ля­ет­ся вто­рой этап, обес­пе­чи­ваю­щий раз­вер­ты­вание од­но­мер­ной функ­ции фильт­ра в дву­мер­ный мас­сив и ум­но­жение зна­чений фильт­ра на спектр ис­ход­но­го изо­бра­жения. Фраг­мент про­грамм­ной реа­ли­за­ции та­ко­го ал­го­рит­ма фильт­ра­ции пред­став­лен ниже:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
 $N2=$N/2;&lt;br /&gt;
 for($i=0;$i&amp;lt;$N2;$i++) {&lt;br /&gt;
 $FILTER[$i] = (1.+ $MTF[$nf]**2)*$MTF[$i]/($MTF[$nf]**2 +&lt;br /&gt;
 $MTF[$i]**2);&lt;br /&gt;
 }&lt;br /&gt;
 for($j=0;$j&amp;lt;$N; $j++){&lt;br /&gt;
 for($i=0;$i&amp;lt;$N; $i++){ &lt;br /&gt;
 		 $w2[$i][$j]=0;&lt;br /&gt;
 }}&lt;br /&gt;
 &amp;amp;d2cdft(\@B,\@w2,\$N,\$PI);&lt;br /&gt;
 for($k=0;$k&amp;lt;$N; $k++){&lt;br /&gt;
 $k1=$k;&lt;br /&gt;
 		 if($k &amp;gt; $N2) { $k1=$k-$N;}&lt;br /&gt;
 		 $x=$k1**2;&lt;br /&gt;
 for($j=0;$j&amp;lt;$N; $j++){&lt;br /&gt;
 $j1=$j;&lt;br /&gt;
 		 if($j &amp;gt; $N2) { $j1=$j-$N;}&lt;br /&gt;
 		 $R = sqrt ( $x +$j1**2 );&lt;br /&gt;
 	 $Q = &amp;amp;parv(\$R,\@Xc,\@FILTER,\$N2);&lt;br /&gt;
 $Re[$k][$j] *=$Q;&lt;br /&gt;
 $Im[$k][$j] *=$Q;&lt;br /&gt;
 }}&lt;br /&gt;
 &amp;amp;d2cdfti(\@Re,\@Im,\$N,\$PI);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вход­ное фо­то­изо­бра­жение со­дер­жит­ся в дву­мер­ном мас­си­ве '''@B'''. Пря­мое и об­рат­ное дву­мер­ное пре­об­ра­зо­вание Фу­рье вы­пол­ня­ют­ся с по­мо­щью под­про­грамм '''d2cdft()''' и '''d2cdfti()''', со­от­вет­ствен­но. Ис­ход­ная функ­ция ФПМ, по­лу­чен­ная на­ми вы­ше, на­хо­дит­ся в мас­си­ве '''@MTF'''. Функ­ция фильт­ра, рас­счи­тан­ная по фор­му­ле (1), за­но­сит­ся в од­но­мер­ный мас­сив '''@FILTER'''. Для по­лу­чения дву­мер­ной функ­ции фильт­ра ''Q(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'' ис­поль­зу­ет­ся под­про­грам­ма линей­ной ин­тер­по­ля­ции '''parv()''', ко­то­рая обес­пе­чи­ва­ет вы­чис­ление про­ме­жу­точ­ных зна­чений фильт­ра в плоско­сти про­стран­ствен­ныхчастот ''(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)''. Па­ра­метр '''R''' яв­ля­ет­ся те­ку­щим ра­диу­сом, а вспо­мо­га­тель­ный мас­сив '''@Xc''' пред­став­ля­ет со­бой мас­сив ар­гу­мен­та вход­ной функ­ции фильт­ра, и, в ча­ст­но­сти, мо­жет быть за­дан как без­раз­мер­ная функ­ция с единич­ным ша­гом:&lt;br /&gt;
&lt;br /&gt;
 for($j=0;$j&amp;lt;$N2; $j++){$Xc[$j]=$j;}&lt;br /&gt;
&lt;br /&gt;
Вы­ход­ные зна­чения восста­нов­лен­но­го спек­тра ''S1'' фо­то­изо­бра­жения за­но­сят­ся в мас­си­вы ре­аль­ной '''@Re''' и мнимой '''@Im''' части ком­плекс­но­го спек­тра ''S1'', со­от­вет­ствен­но. Ре­зуль­ти­рую­щее восста­нов­лен­ное изо­бра­жение, по­сле вы­полнения об­рат­но­го пре­об­ра­зо­вания Фу­рье с по­мо­щью под­про­грам­мы '''d2cdfti()''', по­ме­ща­ет­ся в дву­мер­ный мас­сив '''@Re'''. На рис. 5 по­ка­за­но ис­ход­ное и восста­нов­лен­ное фо­то­изо­бра­жения, по­лу­чен­ные с по­мо­щью циф­ро­вой фо­то­ка­ме­ры в стан­дарт­ном ре­жи­ме съем­ки.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_71_1.jpg|400px|Рис. 5]] Рис. 5. Ре­зуль­тат ком­пен­са­ции ФПМ фо­то­ка­ме­ры для стан­дарт­но­го ре­жи­ма съем­ки: а) ис­ход­ное фо­то­изо­бра­же­ние (Blue), б) ре­зуль­тат вос­ста­нов­ле­ния.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF135_71_2.jpg|400px|Рис. 6]] Рис. 6. Ре­зуль­тат ком­пен­са­ции ФПМ фо­то­ка­ме­ры для ре­жи­ма съем­ки мак­ро: а) ис­ход­ное фо­то­изо­бра­же­ние (Blue), б) ре­зуль­тат вос­ста­нов­ле­ния.|Ширина=400px}}&lt;br /&gt;
&lt;br /&gt;
Как пра­ви­ло, в этом ре­жи­ме съем­ки циф­ро­вые фо­то­гра­фии по­лу­ча­ют­ся вполне удов­ле­тво­ри­тель­но­го ка­че­ства. Ча­ще все­го понижен­ное ка­че­ство циф­ро­во­го фо­то свя­за­но с ре­жи­мом мак­ро­съем­ки. На рис. 6 по­ка­за­но ис­ход­ное и восста­нов­лен­ное фо­то­изо­бра­жения, ко­то­рые бы­ли по­лу­че­ны в этом режиме.&lt;br /&gt;
&lt;br /&gt;
С точ­ки зрения на­груз­ки на про­цес­сор, при вы­полнении про­це­дур улуч­шения ка­че­ства наи­бо­лее за­трат­ной яв­ля­ет­ся про­це­ду­ра ин­тер­по­ля­ции. Для умень­шения вре­мени об­ра­бот­ки фо­то­изо­бра­жения мож­но за­ранее сфор­ми­ро­вать дву­мер­ную мат­ри­цу фильт­ра ''Q(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'' и хранить его на диске. Для пе­ре­мно­жения мат­риц спек­тра ис­ход­но­го фо­то­изо­бра­жения ''S(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'' и мат­ри­цы фильт­ра ''Q(v&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt;,v&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;)'' мож­но восполь­зо­вать­ся па­ке­том (мо­ду­лем) ''Perl'' '''PDL'''. Основ­ное досто­ин­ство па­ке­та '''PDL''' – вы­со­кая ско­рость сло­жения и пе­ре­мно­жения мат­риц боль­шой раз­мер­но­сти и ком­пакт­ное хранение мас­си­вов дан­ных с пла­ваю­щей за­пя­той. На­при­мер, ска­ляр­ное про­из­ве­дение двух мат­риц ве­ще­ствен­ных чи­сел с пла­ваю­щей за­пя­той и раз­мер­но­стью 2048 × 2048 со­став­ля­ет око­ло 1 се­кун­ды, а сло­жение та­ких мат­ри­ц зай­мет до­ли се­кун­ды. Дву­мер­ный мас­сив чи­сел с пла­ваю­щей за­пя­той раз­мер­но­стью 1024 × 1024, принимая тип дан­ных '''PDL''', бу­дет занимать все­го 4 МБ опе­ра­тив­ной па­мя­ти. Па­кет '''PDL''' по­зво­ля­ет ла­конич­но запи­сы­вать ма­те­ма­ти­че­ские опе­ра­то­ры для ра­бо­ты с мат­ри­ца­ми в ви­де од­ной стро­ки – на­при­мер, код для ска­ляр­но­го ум­но­жения двух мат­риц '''$a''' и '''$b''' бу­дет иметь вид&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
 use PDL;&lt;br /&gt;
 $c = $a * $b;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со­от­вет­ст­вен­но, код для пе­ре­мно­же­ния дву­мер­но­го ком­плекс­но­го спек­тра изо­бра­же­ния на дву­мер­ный фильтр за­пи­шет­ся в ви­де&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
 $re = pdl[@Re];&lt;br /&gt;
 $im = pdl[@Im];&lt;br /&gt;
 $q = pdl[@Q];&lt;br /&gt;
 $re = $q*$re;&lt;br /&gt;
 $im = $q*$im;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ува­жае­мый чи­та­тель, ес­ли вас по­на­ча­лу оза­да­чи­ли «пре­об­ра­зо­ва­ние Фу­рье» и реа­ли­за­ция ма­те­ма­ти­че­ских фор­мул, то от­не­си­тесь к ним как к «чер­но­му ящи­ку». Глав­ная поль­за при­ме­не­ния '''Math::FFT''' для оцен­ки ка­че­ст­ва со­сто­ит в том, что с по­мо­щью не­боль­шой про­грам­мы на ''Perl'' у вас поя­ви­лась воз­мож­ность объ­ек­тив­но срав­ни­вать оп­ти­че­ское раз­ре­ше­ние со­вре­мен­ных фо­то- и ви­део­сис­тем во всей по­ло­се ви­део­час­тот, а не ори­ен­ти­ро­вать­ся толь­ко на один па­ра­метр раз­ре­ше­ния – ко­ли­че­ст­во ме­га­пик­се­лей.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>