<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KARTz.RU &#187; графика</title>
	<atom:link href="http://kartz.ru/tag/%d0%b3%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://kartz.ru</link>
	<description>кушаешь морковь - встанет вновь и вновь</description>
	<lastBuildDate>Mon, 29 Aug 2016 08:06:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Сканируем негативы</title>
		<link>http://kartz.ru/2011/09/02/slide-scan/</link>
		<comments>http://kartz.ru/2011/09/02/slide-scan/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 04:22:40 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[графика]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=1178</guid>
		<description><![CDATA[Дано: семейный фотоархив на нескольких негативных чёрно-белых фотоплёнках.
Для решения проблемы был одолжен сканер EPSON Perfection 2400 Photo. Прибор заработал в старой и давно неподдерживаемой Ubuntu 8.04 сразу. Оказался довольно быстрым и качественным.

Дальше всё просто:

1. Определитесь, какой стороной засовывать негативы. Проще всего это сделать экспериментальным путём.
Если все кадры однородны по освещённости, то после предварительного сканирования xsane [...]]]></description>
			<content:encoded><![CDATA[<p>Дано: семейный фотоархив на нескольких негативных чёрно-белых фотоплёнках.</p>
<p>Для решения проблемы был одолжен сканер EPSON Perfection 2400 Photo. Прибор заработал в старой и давно неподдерживаемой Ubuntu 8.04 сразу. Оказался довольно быстрым и качественным.</p>
<p><a href="http://kartz.ru/wp-content/uploads/2011/09/m1.jpg"><img src="http://kartz.ru/wp-content/uploads/2011/09/m1-150x150.jpg" alt="" title="m1" width="150" height="150" class="alignnone size-thumbnail wp-image-1179" /></a></p>
<p>Дальше всё просто:<br />
<span id="more-1178"></span></p>
<p>1. Определитесь, какой стороной засовывать негативы. Проще всего это сделать экспериментальным путём.</p>
<p>Если все кадры однородны по освещённости, то после предварительного сканирования xsane выставляет близкие к оптимальным параметры яркости, контрастности и гамма-коррекции. При разнородных кадрах приходится подстраивать вручную. При сильно разнородных &#8211; даже сканировать дважды, хотя последующая обработка показала, что смысла в этом не очень много.</p>
<p>Чёрно-белые негативы есть смысл сканировать сразу в чёрно-белом режиме &#8211; это быстрее.</p>
<p>2. Конструкция слайд-модуля такова, что вытащить &laquo;задний&raquo; конец плёнки затруднительно, но возможно. Я хотел попробовать сканировать плёнку, не разрезая, но это привело к появлению вертикальных полос и искажений. ??зрядно изнасиловав мозг, я догадался, что это происходит из-за того, что при этом конец плёнки закрывает калибровочную область.</p>
<p>Мораль: плёнку обязательно надо резать.</p>
<p>3. Плёнку лучше всего резать на кусочки ровно по 6 кадров и засовывать их всегда одинаково, так, чтобы границы кадров находились напротив разделительных линий слайд-модуля. Это нужно, чтобы потом автоматически порезать полученные сканы.</p>
<p>4. Так как сканов получилось много, для их автоматизированной обработки использовался пакет imagemagick. Был написан скрипт:</p>
<p><code><br />
#!/bin/sh<br />
c="-negate -blur 2 -unsharp 3x1+1.2+0.02 -equalize -normalize -verbose"<br />
convert -crop 1100x1670+40+73  $c $1 $1-cut1.jpg<br />
convert -crop 1100x1670+40+1850 $c $1 $1-cut2.jpg<br />
convert -crop 1100x1670+40+3650 $c $1 $1-cut3.jpg<br />
convert -crop 1100x1670+40+5420 $c $1 $1-cut4.jpg<br />
convert -crop 1100x1670+40+7220 $c $1 $1-cut5.jpg<br />
convert -crop 1100x1670+40+9005 $c $1 $1-cut6.jpg<br />
</code></p>
<p>Этому скрипту были скормлены сканы через</p>
<p><code><br />
find | grep jpeg | grep -v cut | grep -v "/00/" | xargs -t -I '{}' ./dph.sh '{}'<br />
</code></p>
<p>В винде imagemagick тоже работает.</p>
<p>Помимо обрезки как таковой скрипт инвертирует негативы, нормализует и немного реруширует фотку. На большинстве снимков автоматическая обработка показала удовлетворительные результаты, с учётом возраста и качества исходных плёнок.</p>
<p>Только не спрашивайте, откуда цифры в скрипте &#8211; они получены экспериментально для обычной фотоплёнки и разрешения 1200 точек на дюйм с небольшим запасом (около 5% кадра).</p>
<p>Набор фильтров изначально был иным, немного оптимизирован по времени счёта.</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2011/09/02/slide-scan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Чётко, как на ксерокопии</title>
		<link>http://kartz.ru/2010/11/19/scan-copy/</link>
		<comments>http://kartz.ru/2010/11/19/scan-copy/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 08:21:38 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[бытовое]]></category>
		<category><![CDATA[графика]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=690</guid>
		<description><![CDATA[Часто возникает необходимость сделать светокопию документа при помощи сканера (или фотоаппарата) и принтера. Но качество таких копий часто оставляет желать лучшего. Наиболее типичные проблемы:
 &#8211; чёрные поля,
 &#8211; неправильный размер,
 &#8211; одни участки тёмные, другие наоборот не видно,
 &#8211; избыточный расход краски,
 &#8211; недостаточная резкость или контрастность&#8230;
Однако, есть рецепт для исправления этой проблемы&#8230;

1. Запускаем GIMP.
2. [...]]]></description>
			<content:encoded><![CDATA[<p>Часто возникает необходимость сделать светокопию документа при помощи сканера (или фотоаппарата) и принтера. Но качество таких копий часто оставляет желать лучшего. Наиболее типичные проблемы:<br />
 &#8211; чёрные поля,<br />
 &#8211; неправильный размер,<br />
 &#8211; одни участки тёмные, другие наоборот не видно,<br />
 &#8211; избыточный расход краски,<br />
 &#8211; недостаточная резкость или контрастность&#8230;</p>
<p>Однако, есть рецепт для исправления этой проблемы&#8230;<br />
<span id="more-690"></span><br />
1. Запускаем GIMP.<br />
2. Файл — захватить — сканировать.<br />
3. Во время предварительного просмотра выделяем область листа без полей (отступая по сантиметру с каждой стороны)<br />
4. Сканируем с разрешением 300 или 600 точек на дюйм.<br />
5. Цвет — обесцветить — среднее — ок.<br />
6. Фильтры — улучшение — нерезкая маска. Радиус 50, количество — половина. Порог 0.<br />
7. Цвет — порог — 1 — ок.<br />
8. Файл — печать.<br />
9. При необходимости сохраняем как gif в режиме автоматического экспорта. Весить двухцветная картинка будет совсем немного.</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2010/11/19/scan-copy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Распечатать фотографию определителя аппликатуры</title>
		<link>http://kartz.ru/2010/06/23/image-filtering/</link>
		<comments>http://kartz.ru/2010/06/23/image-filtering/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 03:16:17 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[графика]]></category>
		<category><![CDATA[софт]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=538</guid>
		<description><![CDATA[Дано: определитель аппликатуры гитарных аккордов, фотоаппарат-цифромыльница, лазерный принтер.
Требуется: распечатать светокопию определителя аппилкатуры.

Основная проблема &#8211; неравномерная освещённость кадра. Готового велосипеда под руками не оказалось &#8211; пришлось писать свой.
Алгоритм очень неэффективен и очень прост. Загружаем картинку. Для каждой точки вычисляем среднюю яркость в квадрате, окружающем эту точку. Если яркость данной точки больше (с учётом смещения), в новой [...]]]></description>
			<content:encoded><![CDATA[<p>Дано: определитель аппликатуры гитарных аккордов, фотоаппарат-цифромыльница, лазерный принтер.</p>
<p>Требуется: распечатать светокопию определителя аппилкатуры.</p>
<p><span id="more-538"></span></p>
<p>Основная проблема &#8211; неравномерная освещённость кадра. Готового велосипеда под руками не оказалось &#8211; пришлось писать свой.</p>
<p>Алгоритм очень неэффективен и очень прост. Загружаем картинку. Для каждой точки вычисляем среднюю яркость в квадрате, окружающем эту точку. Если яркость данной точки больше (с учётом смещения), в новой картинке делаем её белой. ??наче &#8211; чёрной. То есть порог срабатывания триггера непосредственно зависит от локальной освещённости. За счёт этого яркость картинки выравнивается.</p>
<p>??так, было (картикки кликабельны):<br />
<a href="http://kartz.ru/wp-content/uploads/2010/06/1i23.jpg"><img class="alignnone size-medium wp-image-539" title="1i23" src="http://kartz.ru/wp-content/uploads/2010/06/1i23-300x132.jpg" alt="" width="300" height="132" /></a></p>
<p>Стало:<br />
<a href="http://kartz.ru/wp-content/uploads/2010/06/1i.gif"><img class="alignnone size-medium wp-image-540" title="1i" src="http://kartz.ru/wp-content/uploads/2010/06/1i-300x132.gif" alt="" width="300" height="132" /></a></p>
<p>Скрипт (написан на php с сипользованием библиотека gd2, ногами по почкам не бить, про алгоритмическую неэффективность уже говорил&#8230;):</p>
<p>&lt;?php</p>
<p>$input=&#8217;C:\data\photo\djvu\1\uzc.jpg&#8217;;<br />
$output=&#8217;C:\data\photo\djvu\1\uzc.gif&#8217;;<br />
$dx=7;<br />
$dy=7;<br />
$shift=-5; //minus means more white</p>
<p>//error_reporting(0);<br />
error_reporting(E_ALL);<br />
set_time_limit(0);</p>
<p>if (!extension_loaded(&#8216;gd2&#8242;)) {<br />
dl( &#8216;php_gd2.&#8217; . PHP_SHLIB_SUFFIX);<br />
}</p>
<p>echo(&#8216;Loading&#8230;.&#8217;.&raquo;\r\n&raquo;);</p>
<p>$im1=imagecreatefromjpeg($input);<br />
$xm=imagesx($im1);<br />
$ym=imagesy($im1);</p>
<p>$im2=imagecreate($xm, $ym);<br />
$white = imagecolorallocate($im2, 255, 255, 255);<br />
$black = imagecolorallocate($im2, 0, 0, 0);</p>
<p>echo(&#8216;Loaded&#8217;.&raquo;\r\n&raquo;);</p>
<p>$iii=array();</p>
<p>for ($i = 0; $i &lt; $xm; $i++)<br />
{<br />
$iii[$i]=array();<br />
for ($j = 0; $j &lt; $ym; $j++)<br />
{<br />
$iii[$i][$j]=dyat($im1,$i,$j);<br />
}<br />
}</p>
<p>echo(&#8216;Loaded1&#8242;.&raquo;\r\n&raquo;);</p>
<p>for ($i = 0; $i &lt; $xm; $i++)<br />
{<br />
for ($j = 0; $j &lt; $ym; $j++)<br />
{<br />
$x1=$i-$dx;<br />
$x2=$i+$dx;<br />
$y1=$j-$dy;<br />
$y2=$j+$dy;<br />
if($x1&lt;0) { $x1=0; }<br />
if($x2&gt;=$xm) { $x2=$xm-1; }<br />
if($y1&lt;0) { $y1=0; }<br />
if($y2&gt;=$ym) { $y2=$ym-1; }<br />
$cs=0;<br />
$pn=0;<br />
for ($i1 = $x1; $i1 &lt;= $x2; $i1++)<br />
{<br />
for ($j1 = $y1; $j1 &lt;= $y2; $j1++)<br />
{<br />
$cs += $iii[$i][$j];<br />
}<br />
}<br />
$mc=$cs/(($x2-$x1+1)*($y2-$y1+1));<br />
if($iii[$i][$j]&gt;$mc+$shift)<br />
{<br />
imagesetpixel($im2, $i, $j, $white);<br />
}<br />
else<br />
{<br />
imagesetpixel($im2, $i, $j, $black);<br />
}<br />
echo(&#8216;.&#8217;);<br />
}<br />
echo(floor(100*$i/$xm).&raquo;%\r\n&raquo;);<br />
}</p>
<p>echo(&#8216;Saving&#8230;.&#8217;.&raquo;\r\n&raquo;);<br />
imagegif($im2, $output);<br />
echo(&#8216;Done&#8217;.&raquo;\r\n&raquo;);<br />
sleep(29000);</p>
<p>function dyat($im,$x,$y)<br />
{<br />
$rgb = imagecolorat($im, $x, $y);<br />
$r = ($rgb &gt;&gt; 16) &amp; 0xFF;<br />
$g = ($rgb &gt;&gt; 8) &amp; 0xFF;<br />
$b = $rgb &amp; 0xFF;<br />
return(0.299*$r+0.587*$g+0.114*$b);<br />
}</p>
<p>?&gt;</p>
<p>Конец кода. Лиценция CC-BY-NC-ND.</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2010/06/23/image-filtering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
