<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[ПЭВМ "Агат" 7-9: Форум &mdash; Утилита DaDither: конвертация изображений]]></title>
		<link>https://forum.agatcomp.ru//viewtopic.php?id=370</link>
		<atom:link href="https://forum.agatcomp.ru/extern.php?action=feed&amp;tid=370&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Утилита DaDither: конвертация изображений».]]></description>
		<lastBuildDate>Thu, 16 Feb 2023 16:35:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7359#p7359</link>
			<description><![CDATA[<p>Ок, все понял, спасибо за объяснение.</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Thu, 16 Feb 2023 16:35:43 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7359#p7359</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7358#p7358</link>
			<description><![CDATA[<p>Проблема в мерцании. При покадровом переключении оно более сильное и бросается в глаза.</p><p>Скорее всего, из-за размера пикселя. Даже если взять режимы 256x256 на Агате и 256x192 на Спектруме, то агатовский пиксель будет на треть шире. У Агата видимая часть строки отображается за 48.8 мкс. У Спектрума - за 36.6 мкс. То есть, на одном и том же мониторе или телевизоре ширина картинки Спектрума будет 75% от ширины картинки Агата.</p><p>А в случае режима 128x128 площадь агатовского пикселя получается в 5.33 раза больше, чем спектрумовского.</p><p>Кроме того, по моим подозрениям, тут еще и наличие бордера на Спектруме влияет. Дело в том, что у кинескопных мониторов и телевизоров размер картинки зависит от её яркости. Грубо говоря, если на черном фоне нарисовать белым цветом прямоугольник без заливки внутренней части, то его видимый размер будет меньше, чем такого же прямоугольника с заливкой.</p><p>Величина этого изменения зависит от тока лучей кинескопа и скорости реакции выходного каскада строчной развертки. А ток лучей зависит от яркости картинки.</p><p>Положим, у нас в середине черного экрана закрашенный белый прямоугольник. Когда начинается отображение прямоугольника на экране, ток лучей растет, но первые несколько строк выходной каскад не реагирует - расходуется запасенная энергия в умножителе. Потом анодное напряжение начинает падать, автоматика пытается его поддержать и увеличивает выходное напряжение. Но это же напряжение идет на отклоняющую систему, поэтому размер картинки растет. Потом отображение прямоугольника заканчивается, автоматика уменьшает напряжение и размер картинки восстанавливается.</p><p>Короче, вертикальные края у реальной картинки на кинескопе всегда немного волнистые. Насколько я помню, к телевизорам даже есть требование, чтобы изменение размера от яркости не превышало 5%.</p><p>И когда страницы переключаются, эти &quot;волны&quot; могут совпадать не точно. Как результат, и пиксели из разных фреймов могут совпадать неточно. Причем, это расхождение растет по краям экрана и исчезает в центре.</p><p>Вот тут бордер на Спектруме может улучшать ситуацию: во-первых, из-за него картинка находится дальше от края экрана где расхождение пикселей меньше. А во-вторых, поскольку бордер всегда одинаковый и занимает 25% строки, то уменьшается разность среднего тока лучей между соседними строками. В результате меньше меняется размер картинки.</p><p>Ну и возвращаясь к Агату: когда в режиме 128x128 фреймы переключаются на каждой телевизионной строке, то в два раза снижается площадь пикселя, а средняя яркость по двум строкам получается одинаковой для соседних кадров.</p><p>Надеюсь, объяснение не было слишком заумным :)</p><p>Да, ну и у ЖК мониторов этих проблем с размером просто не существует. Думаю, там переключение кадров работает лучше, хотя сам не видел.</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Wed, 15 Feb 2023 20:25:55 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7358#p7358</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7357#p7357</link>
			<description><![CDATA[<p>И все таки я хочу понять до конца проблему совмещения гигаскрина и нового HAM режима в размере 128x128. DaDither готовит фреймы и располагает в них пиксели в расчете на то, что каждый фрейм будет отображаться ровно один кадр и требует смены отображаемого фрейма только в начале кадра. И мне не понятно, для чего менять страницы каждую строку?</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Tue, 14 Feb 2023 20:56:38 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7357#p7357</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7351#p7351</link>
			<description><![CDATA[<div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Это программный режим.</p></blockquote></div><p>Теперь понял, вопрос снят.</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Sun, 12 Feb 2023 15:56:53 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7351#p7351</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7349#p7349</link>
			<description><![CDATA[<div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Режим 128x256 сам по себе - это аппаратный режим, или программный?</p></blockquote></div><p>Это программный режим.<br />Аппаратные режимы Агат-7: 64x64 и 128x128 16 цветов и 256x256 ч/б.<br />Аппаратные режимы Агат-9: 128x128 16 цветов, 256x256 4 цвета, 256x256 ч/б и 512x256 ч/б. Плюс режим Apple HGR.</p><div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Extra lines определяет кол-во дополнительных строк сверху и снизу от текущего блока, пиксели которых участвуют в формировании палитры.</p></blockquote></div><p>Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Sun, 12 Feb 2023 14:52:24 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7349#p7349</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7347#p7347</link>
			<description><![CDATA[<div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Гигаскрина с платой палитр? Технически, там та же проблема, что и с режимом 128x256 - поскольку переключение страниц надо делать каждую телевизионную строку</p></blockquote></div><p>Я не совсем понимаю, для чего делать переключение страниц надо делать каждую телевизионную строку. Режим 128x256 сам по себе - это аппаратный режим, или программный?</p><div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>И еще хотел спросить, а что делает параметр Extra lines?</p></blockquote></div><p>Формирование палитры для каждого блока в идеале должно происходить на основе пикселей блока. Но это приводит к тому, что палитры предыдущего блока и текущего могут сильно отличаться, и как следствие - хорошо различимые полосы. Extra lines определяет кол-во дополнительных строк сверху и снизу от текущего блока, пиксели которых участвуют в формировании палитры. Это делает палитру несколько бедней, но позволяет размыть границы между блоками.</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Sun, 12 Feb 2023 13:31:52 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7347#p7347</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7346#p7346</link>
			<description><![CDATA[<div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Ок, а что по поводу гигаскрина 128x128?</p></blockquote></div><p>Гигаскрина с платой палитр? Технически, там та же проблема, что и с режимом 128x256 - поскольку переключение страниц надо делать каждую телевизионную строку, а прерывания приходят только раз в 8 строк, то длительности надо мерять программно. И необходимость подгонки по числу тактов съедает время, которое нужно для обновления палитры. В результате тактов не хватает.</p><p>Вообще, мне кажется, режим HAM интереснее. Технически тут так же доступно до 256 цветов, как и с гигаскрином. Но этот режим должен быть более совместим с эмуляторами. И на реальном железе картинка не должна мерцать.</p><p>И еще хотел спросить, а что делает параметр Extra lines? Я вижу, что он влияет на формирование палитры, но хотелось бы знать точнее.</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Sun, 12 Feb 2023 11:39:46 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7346#p7346</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7341#p7341</link>
			<description><![CDATA[<div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Сюда бы Флойда со Стейнбергом.</p></blockquote></div><p>Можно и пресвятого Флойда использовать. Верхний ряд - обычный режим без/с Флойдом, нижний ряд - новый режим (я обозвал его HAM):</p><p><span class="postimg"><img src="https://www.dadither.com/img/AgatHAM2.png" alt="https://www.dadither.com/img/AgatHAM2.png" /></span></p><div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Изменения палитры можно сохранять просто как массив из 32 элементов по 24 байта</p></blockquote></div><p>Ок, сделал.</p><p>На выходе FIL файл размером 9256 байт:</p><p>-заголовок - 44 байта.<br />-непосредственно пиксели - 8192 байта. Первые четыре строки используют нижние восемь цветов палитры, следующие четыре используют верхние восемь цветов палитры, следующие четыре снова используют нижние восемь цветов, и т.д.<br />-палитра, состоящая из 32 блоков - 768 байт. Каждый блок состоит из 8 цветов, записанных последовательно: R0, G0, B0, R1, G1, B1, R2, G2, B2, ...<br />-футер 252 байта в <a href="http://agatcomp.ru/agat/PCutils/EXIF.shtml">специальном формате</a> (с) garnizon. В качестве кода палитры используется недокументированное значение 0xE.</p><p><a href="https://www.dadither.com/bin/DaDither.exe">Конвертер</a>. Он может не только создавать FIL файлы, но и открывать их для импорта. Также FIL графику можно смотреть с помощью <a href="https://www.dadither.com/bin/DaScrViewWLX.zip">плагина для TotalCommander</a>.</p><div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Совместить режим 128x256 со сменой палитр вряд ли получится.</p></blockquote></div><p>Ок, а что по поводу гигаскрина 128x128?</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Tue, 07 Feb 2023 05:05:30 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7341#p7341</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7340#p7340</link>
			<description><![CDATA[<div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Я думал будет сильно хуже, но получается довольно неплохо. Хотя, конечно, все сильно зависит от исходного изображения.</p></blockquote></div><p>Ух ты! Очень здорово получилось! Особенно самая верхняя и самая нижняя четверти картинки. Я думал, что этот подход будет нормально работать только с картинками типа заставки Buena Vista <a href="https://www.closinglogos.com/page/Buena_Vista_Television">https://www.closinglogos.com/page/Buena … Television</a>.<br />То есть, градиент на фоне, плюс не слишком сложная картинка на переднем плане. А тут практически фотография.</p><p>В середине картинки, конечно, ограничение на 8 цветов сказалось - бандинг полез. Сюда бы Флойда со Стейнбергом. Правда, большой вопрос, как тут выбирать исходные цвета. Просто брать самые частотные цвета плохо - на мелких деталях цвета будут теряться. Надо как-то учитывать, используется ли цвет для отображения контрастных деталей, и поднимать ему приоритет. Ну или можно попробовать просто взять и принудительно включать в палитру самый темный цвет из блока.</p><p>Изменения палитры можно сохранять просто как массив из 32 элементов по 24 байта (8 записей R, G, B). Упаковывать не нужно, все равно для показа картинки придется распаковывать, а экономия нескольких сотен байт при объеме картинки 8 Кб, мне кажется, смысла не имеет. Удобнее сохранять все в один файл, чтобы потом не потерять ничего.</p><p>Совместить режим 128x256 со сменой палитр вряд ли получится. Там очень замороченный обработчик прерываний. Так, на вскидку, циклов на обновление палитры не хватит.</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Mon, 06 Feb 2023 18:10:06 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7340#p7340</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7339#p7339</link>
			<description><![CDATA[<p>Я думал будет сильно хуже, но получается довольно неплохо. Хотя, конечно, все сильно зависит от исходного изображения.</p><p>Для сравнения слева на право сверху вниз<br />1) Оригинальное изображение<br />2) Обычный режим 128x128 с Флойдом<br />3) Обычный режим 128x128 без Флойда<br />4) Новый режим</p><p><span class="postimg"><img src="https://www.dadither.com/img/AgatHAM.png" alt="https://www.dadither.com/img/AgatHAM.png" /></span></p><p>В каком формате сохранять изменения палитры? В виде отдельного файла или вместе с картинкой? Что по поводу 128x256?</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Mon, 06 Feb 2023 09:43:00 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7339#p7339</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7338#p7338</link>
			<description><![CDATA[<div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>Так, вроде это моя идея была</p></blockquote></div><p>Ок, не буду оспаривать авторство :) Просто <a href="http://forum.agatcomp.ru/viewtopic.php?pid=4784#p4784">увидел я это предложение</a> у <strong>garnizon</strong>.</p><div class="quotebox"><cite>avivanov76 пишет:</cite><blockquote><p>2) в каждом блоке разрешить использовать не более 8 цветов</p></blockquote></div><p>8 цветов это прям не очень густо. Но я попробую реализовать.</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Mon, 06 Feb 2023 07:54:12 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7338#p7338</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7337#p7337</link>
			<description><![CDATA[<div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Не совсем понял. В строке можно менять произвольные 8 цветов или только последовательно идущие 8?</p></blockquote></div><p>Так, вроде это моя идея была <a href="http://forum.agatcomp.ru//viewtopic.php?pid=3136#p3136">http://forum.agatcomp.ru//viewtopic.php?pid=3136#p3136</a>. Вот только надо вспомнить, что я там 4 года назад придумал :)</p><p>Речь вроде бы шла про режим 128x128 16 цветов при наличии платы цветовых палитр. У платы палитр есть 48 регистров цвета. Их можно перепрограммировать в процессе отображения кадра.</p><p>С этим есть проблема - время обратного хода луча в графическом режиме - 12,8 мкс. Этого мало даже для перепрограммирования одного регистра палитры (один вызов IRQ требует 7 мкс). А если мы начнем менять палитру во время прямого хода луча, то, во-первых, это будет видно, а во-вторых, не факт, что мы будем успевать поменять цвет до того момента, когда он понадобится. Результатом будет картинка с неправильными цветами и &quot;снегом&quot; на экране.</p><p>Но есть обходной путь:<br />1) разбить изображение на блоки строк<br />2) картинку подготовить так, чтобы в каждом блоке строк использовалась только половина палитры (8 цветов)<br />3) во время отображения очередного блока менять цвета в другой половине палитры, которая текущим блоком не используется</p><p>Время отображения 4 строк в режиме 128x128 - 512 мкс. Должно с запасом хватить на перепрограммирование половины палитры (около 300 мкс). Размер в 4 строки еще выбран потому, что IRQ будет приходить каждую 4 строку.</p><p>Итого:<br />1) надо побить картинку на блоки (полоски) 128x4 пикселя<br />2) в каждом блоке разрешить использовать не более 8 цветов<br />3) порядок цветов строго не задан, но менять его на протяжении всего кадра нельзя: всегда 8 записей (24 регистра) палитры будут заняты в отображении текущего кадра, поэтому менять можно будет только оставшиеся 8.</p><p>Ну и спрашивается, зачем усложнять процесс обновления палитры, если можно просто выбрать 8 последовательных цветов (0-7 для четных полосок, 8-15 для нечетных)? Ведь смена порядка никаких выгод не дает?</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Sun, 05 Feb 2023 09:41:00 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7337#p7337</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=7336#p7336</link>
			<description><![CDATA[<div class="quotebox"><cite>garnizon пишет:</cite><blockquote><p>Можно даже круче фокус сделать - палитру ведь можно менять по прерываниям. IRQ, по моему, генерируется на каждую текстовую строку. Проблема правда в том, что все 48 регистров за время обратного хода луча по строке перезагрузить не удастся - быстродействия не хватит. Но если поделить палитру на 2 части по 8 цветов, а картинку подготовить так, чтобы больше 8 цветов в смежных строках не использовалось, то можно обновлять палитру блоками по 8 цветов.</p></blockquote></div><p>Не совсем понял. В строке можно менять произвольные 8 цветов или только последовательно идущие 8?</p>]]></description>
			<author><![CDATA[null@example.com (Dec)]]></author>
			<pubDate>Sat, 04 Feb 2023 09:24:10 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=7336#p7336</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=6024#p6024</link>
			<description><![CDATA[<div class="quotebox"><cite>Dec пишет:</cite><blockquote><p>Я не имею ни одной идеи, как автоматически конвертировать во что-то более менее адекватное в Hires, поэтому отложено на неопределенное будущее.</p></blockquote></div><p><a href="http://forum.agatcomp.ru//viewtopic.php?id=416">http://forum.agatcomp.ru//viewtopic.php?id=416</a></p>]]></description>
			<author><![CDATA[null@example.com (garnizon)]]></author>
			<pubDate>Tue, 28 Sep 2021 14:37:38 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=6024#p6024</guid>
		</item>
		<item>
			<title><![CDATA[Re: Утилита DaDither: конвертация изображений]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=4954#p4954</link>
			<description><![CDATA[<p>Мерцание несильное, но есть ощущение какой-то текстуры в изображении - полного слияния пикселей в однородный цвет нет.<br />Кстати, заливка сплошным цветом выглядела иначе - там было ощущение линейчатости растра и из-за этого изображение казалось более четким. С шахматкой картинка кажется слегка размытой.</p>]]></description>
			<author><![CDATA[null@example.com (avivanov76)]]></author>
			<pubDate>Sun, 25 Apr 2021 21:24:51 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=4954#p4954</guid>
		</item>
	</channel>
</rss>
