User Tag List

Показано с 1 по 10 из 31

Тема: Обработка изображения (как приблизиться к реальному ZX Spectrum)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    15.02.2005
    Адрес
    Санкт-Петербург
    Сообщений
    406
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от random
    фильтр это конечно хорошо, но в этом году (как и в прошлом) спектрум будет показываться по такой схеме:

    спектрум > pal coder > s-video in minidv > firewire in pc > dv-avi (178мб в минуту)

    пал кодер, скорее всего именно от CHRV.

    но фильтр очень интересный и можно будет проверить по качеству с такой связкой. но это будет работать только на статичных картинках.
    а зачем minidv?
    Живи, играй!

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    21.01.2005
    Адрес
    ссср
    Сообщений
    468
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kgbplus
    а зачем minidv?
    много причин. во-первых удобно в плане портативности и самого процесса, во-вторых очень хорошее качество, ну а также бакап и все такое.

  4. #3

    Регистрация
    19.01.2005
    Адрес
    Москва
    Сообщений
    333
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от random
    много причин. во-первых удобно в плане портативности и самого процесса, во-вторых очень хорошее качество, ну а также бакап и все такое.
    Я, простите, про что тут выше распинался? В первой своей мессаге. Если под хорошим качеством имеется ввиду именно качество изображения.
    Sinclair ZX Spectrum 128k (Toastrack) + ZX Spectrum +3 + DivMMC EnJOY
    Commodore 64c + 1541 Ultimate II
    Commodore Amiga 1200 + 8Mb Fast + CF 8Gb + GOTEK

  5. #4

    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    2,250
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    282
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PheeL
    Я, простите, про что тут выше распинался? В первой своей мессаге. Если под хорошим качеством имеется ввиду именно качество изображения.
    О качестве изображения я бы не говорил: «хорошее» - «плохое». Наверно правильнее сказать: «точно повторяющее оригинальное». Если конечно я правильно понял конечный смысл идеи PheeL'a.



    Что бы точно повторить оригинальное изображение надо проследить весь пусть преобразования и понять, какие искажения возникают на каждом из этапов преобразования:

    1. RGB > UVY

    2. UVY > PAL

    3. PAL > UHF (PAL)

    Далее в телевизоре в обратном порядке.

    Кроме того, значительный вклад в формирование изображения вносит CRT (ЭЛТ) телевизора.



    1. Преобразование происходит по след. правилам:

    Y = 0.299R + 0.587G + 0.114B

    U = R - Y, а V = B – Y

    Обратный процесс в телевизоре:

    R = Y + U,

    B = Y + V,

    G = Y - 0.509U - 0.194V



    Поскольку изначальные RGB в Speccy формируются одним задающим генератором, фазовые искажения отсутствуют. Зато есть искажения амплитудные, их корень – неидеальные компоненты в схемах кодирования декодирования. Как правило это резисторы с точностью не более 5%. Фактически это выражается в незначительных искажениях цветового баланса всей картинки, и этим можно пренебречь.



    2. Сигналы U и V пропускаются через фильтры НЧ (ограничиваются по частоте до 1,2 МГц). Затем V задерживается на одну строку (64 микросекунды) и модулирует (частотно) поднесущую цветности (4.433 618 МГц) имеющую не постоянную фазу, а изменяющуюся от строки к строке на 180 градусов. U так же модулирует поднесущую цветности, но ее фаза неизменна. Затем сигналы суммируются. Сигналы гашения и синхронизации подмешаны в Y изначально (в ZX Spectrum). В приемнике PAL сигнал цветности проходит линию задержки на длительность одной строки, после чего происходит его сложение и вычитание с основным (незадержанным) сигналом. В процессе этого совпадающие по фазе сигналы складываются, а противоположные по фазе - вычитаются. Таким образом, сигналы V и U полностью разделяются, что исключает возникновение перекрестных искажений. Однако это приводит к уменьшению цветового разрешения по вертикали ровно в два раза (до 7,8кГц).

    То есть фактическое цветное разрешение PAL: <1,2 МГц по горизонтали и 7,8кГц по вертикали. Это легко привязать к частоте пикселей в Speccy (7 МГц).

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

    Еще одним недостатком (или особенностью) реализации PAL кодера в ZX Spectrum, является наличие отдельного синхрогенератора (для генерации поднесущей - 4.433 618 МГц). Это приводит к интерференции с сигналом передачи пикселей (7 МГц) и возникновению муара на изображении.



    3. Используемый в UHF-модуляторе метод преобразования (амплитудная модуляция PAL) приводит к дополнительным искажениям: уменьшается максимальная скорость изменения сигнала (фильтр НЧ). В телевизоре за счет двойного преобразования (ВЧ > ПЧ > НЧ), так же вносятся дополнительные искажения (фильтрация НЧ). Все это приводит к возникновению некоторой размытости изображения, в реальных условиях.



    Кроме того, на качество реального изображения оказывает значительное воздействие расфокусировка изображения и несведение лучей в CRT (ЭЛТ). Эти факторы приводят к дополнительной размытости. Играет роль и увеличенный (по сравнению с мониторами) размер и форма зерен люминофора, которые так же могут сглаживать (либо нет) углы у пикселей.



    Вот, пожалуй, и все. Это драфт, так что если о чем забыл, не взыщите.



    Приложил так же фотографию с телевизора (ZX Spectrum, UHF, TV) и скриншот аналогичной картинки из эмулятора. С фильтром PheeL'a получается пока не совсем то… Хотя идея мне очень понравилась. Если бы ее поддержали разработчики эмуляторов… Не знаю возможно ли это технически (хватит ли скорости для приемлемой точности).


    P.S. Часть треда (начиная с письма PheeL'a) перенесу в раздел «Эмуляторы».
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	coderpal.gif 
Просмотров:	569 
Размер:	8.2 Кб 
ID:	316  

  6. #5

    Регистрация
    19.01.2005
    Адрес
    Москва
    Сообщений
    333
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    О качестве изображения я бы не говорил: «хорошее» - «плохое». Наверно правильнее сказать: «точно повторяющее оригинальное». Если конечно я правильно понял конечный смысл идеи PheeL'a.
    Совершенно верно. Назвать его "хорошим" по сегодняшним меркам не получится, поэтому я привел такое определение как сравнительную характеристику. Потому как "оригинальное" качество тоже варьировалось в широких пределах в зависимости от TV(монитора) и модели компьютера (параметров его видеовыхода).

    Цитата Сообщение от Conan
    Приложил так же фотографию с телевизора (ZX Spectrum, UHF, TV) и скриншот аналогичной картинки из эмулятора. С фильтром PheeL'a получается пока не совсем то… Хотя идея мне очень понравилась. Если бы ее поддержали разработчики эмуляторов… Не знаю возможно ли это технически (хватит ли скорости для приемлемой точности).
    Абсолютно справедливо, что после моего фильтра картинка не будет близко похожа на "оригинал" с реального Спектрума. Очень сложно путём стандартных действий в action'ах создать похожую картинку. Но я полагаю, что всё-таки это лучше чем обычный blur+scanlines который используется в эмуляторах на сегодняшний день. К моему великому сожалению, мы с Conan'ом говорим на разных языках, потому как я в железе ноль и могу понять собеседника рассказывающего в основном только про программную реализацию, а в данном вопросе просто необходимо знать все нюансы хардварной составляющей. Грубо говоря я могу действовать только "на глазок".
    В моём фильтре что в основном "эмулируется" :
    1) это выравнивание яркости когда "решетка" из пикселей цвета с bright 1 совпадает по яркости с этим же цветом в bright 0. Такой приём часто применяет Diver в своих картинках, да и во многих экранах от спектрумовских игрушек (например заставка от Cabal) этот метод тоже используется, что даёт возможность предположить об аналогичном восприятии конечного изображения на "родном" Спекки (когда рядом стоящие знакоместа не разваливаются на "шахматную доску" и квадраты тёмного цвета). Данные операции происходят в RGB каналах.
    2) представление точки в виде квази-точек люминофора. Поскольку точное воспроизведение точек люминофора стандартного телевизора затруднительно (ну если только в районе разрешения 2048х1536 или выше), то я действовал по такой схеме : делаем motion blur под углом в 45 град. для красной составляющей (опять же работаю с RGB каналами изображения), тоже самое для зелёной под 0 град. и -45 град. для синей. Таким образом получается "звёздочка" из цветов. В их пересечении образуется белый пиксел. Особенно хорошо заметно работу этой части фильтра на белых линиях в черном фоне. Хотя тут тоже есть недоработка. Я не "откусываю" от пиксела его "лишний вес" . Т.е. для красной точки - это те места где на экране находится зеленый и синий люминофор. Поэтому у меня получаются ненормально "толстые" пикселы, но они придают дополнительную яркость квази-точке.
    3) Уже знакомый всем scanline. Делается по-простой схеме. Первый пиксел линии белый, второй 50% чёрного (ну или серый), третий 100% чёрный. Дальше накладываю линии по multiply (AND) . Белый пиксел ничего не вычитает, серый вычитает 50% яркости из участка точки, черный выключает яркость полностью (стирает). Это по-идее должно передавать расстояние между люминофорными точками по-вертикали, а может просто потому что так луч идет. Я не знаю.
    4) Небольшой Gaussian монохромный шум - накладывается на scanlines и вместе с ними уже на изображение.

    Как уже понятно, тут не эмулируется "съезжание" ярких\темных атрибутов друг на друга и др. многие аспекты. Но опять же хочу подчеркнуть, что за неимением более подходящего фильтра (потому что всем забить и если сам не сделаешь что-нибудь, никто не пошевелится) и отсутствием у action'ов достаточной свободы действий (их надо суметь составить так чтобы везде потом работало), считаю получившийся у меня результат _приемлемым_ , но не более! Всяко лучше чем потом на ЦЦ кусать локти смотря на громадные квадраты. Всё графикс компо сольют же...
    Последний раз редактировалось PheeL; 13.03.2005 в 17:38.
    Sinclair ZX Spectrum 128k (Toastrack) + ZX Spectrum +3 + DivMMC EnJOY
    Commodore 64c + 1541 Ultimate II
    Commodore Amiga 1200 + 8Mb Fast + CF 8Gb + GOTEK

  7. #6

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    фактически в TV Emulation (unreal) и используются идеи, предложенные Conan'ом. то есть сигнал разбрасывается на YUV, вводятся разные задержки на UV, как на несколько точек, так и на строку. качество плохое, потому что коэффициенты выбраны произвольно и разрешение не удваивается (а сейчас я заметил, что ScreenPheeLter утраивает разрешение. кстати, непонятка - если 3-я строка scanline с нулевой яркостью, почему она не пропадает в изображении, или это артефакты JPG?). в TV Emulation происходит интерполяция средствами видеокарты, результат совсем не тот...

    насчёт скорости можно сказать, что перечисленные фильтры (кроме гауссовского шума, не знаю, как его быстро сделать) - двумерные КИХ-фильтры, их все можно представить как один фильтр, матрица которого скомбинирована из исходных (также, как при рисовании 3d графики отдельно не делают повороты, переносы и преобразование к координатам камеры для каджой точки, а считают результирующую матрицу)

  8. #7

    Регистрация
    19.01.2005
    Адрес
    Москва
    Сообщений
    333
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    фактически в TV Emulation (unreal) и используются идеи, предложенные Conan'ом. то есть сигнал разбрасывается на YUV, вводятся разные задержки на UV, как на несколько точек, так и на строку. качество плохое, потому что коэффициенты выбраны произвольно и разрешение не удваивается (а сейчас я заметил, что ScreenPheeLter утраивает разрешение. кстати, непонятка - если 3-я строка scanline с нулевой яркостью, почему она не пропадает в изображении, или это артефакты JPG?). в TV Emulation происходит интерполяция средствами видеокарты, результат совсем не тот...
    Мне очень нравится фильтр TV Emulation , но уж черезмерно блюрит (и невозможно настроить этот параметр!), и к нему не прилагаются scanlines к сожалению. А так - зашибись и наш выбор.
    А у меня, да, идёт утроение (768х576) изображения (т.е. вместе со small border как раз 1024х768 выходит). Нужно утроение для того чтобы как можно чётче передать, как раз, момент с люминофором (там же и так блюр идет межпиксельный по каналам, потому как чётко точки люминофора телевизора даже при таком разрешении не передать - след. надо их интерполировать. А как? Ответ - блюром. А в эмуляторе можно таблицами на смешивание (точек люминофора меж собой), прям шаблонами выбрасывать на экран строя из них изображение. А таблицы генерить перед запуском).
    Насчёт 3-й строки - извиняюсь, тут я слевил. У меня идёт наложение с 30% прозрачностью, т.е. надо читать так - белая линия ничего не вычитает, средняя серая 15%, нижняя чёрная 35%. Средняя линия присутствует только из-за того, что увеличение идёт некратное 2-ке.


    Цитата Сообщение от SMT
    насчёт скорости можно сказать, что перечисленные фильтры (кроме гауссовского шума, не знаю, как его быстро сделать) - двумерные КИХ-фильтры, их все можно представить как один фильтр, матрица которого скомбинирована из исходных (также, как при рисовании 3d графики отдельно не делают повороты, переносы и преобразование к координатам камеры для каджой точки, а считают результирующую матрицу)
    "Я не знаю кто такая хунта, я не знаю кто такая Чили, но если вы..." (с) старый советский анекдот. Так вот, гауссоновский шум я использовал только из-за того что это _стандартный_ фильтр (мне ж надо было думать о том чтобы action был совместим с предыдущими версиями фотошопа и я использовал одинаковые наборы фильтров). Никто не заставляет именно этот метод эмулировать. Вон в BlueMSX используется Noisy Composite фильтр и все довольны. Главное чтобы он был динамическим и регулируемым, а чем ты генеришь сам шум - никого не трогает. Хочешь заранее заданными паттернами врисовывай его, хочешь на ходу попиксельно генери.
    Sinclair ZX Spectrum 128k (Toastrack) + ZX Spectrum +3 + DivMMC EnJOY
    Commodore 64c + 1541 Ultimate II
    Commodore Amiga 1200 + 8Mb Fast + CF 8Gb + GOTEK

  9. #8

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    PheeL, ещё вопрос. как происходит "выравнивание яркости"?

  10. #9

    Регистрация
    26.01.2005
    Адрес
    Пермь
    Сообщений
    2,524
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    PheeL, те картинки я рисовал на расстроеном телике. Резкость была сбита и контрастность завышена. Когда мне потом G.D. настроил его, после армии, то вся графика уже не выглядела так круто .

    и если сравнивать "на глазок", то на TV моя картинка была гораздо более яркой и не столь размытой, даже когда резкость была сбита. скорее всего изображение "как в орининале, на TV" и "наилучшее качество с разными фильтрами" - это разные вещи, ибо телик и проектор не одно и то же. Это я к тому, Pheel, что даже на телике, конечно, было видно различие между цветом с bright-off и цветом с черной текстурой и bright-on, они сливались только если смотреть издалека и особо детали не разглядывать.
    Последний раз редактировалось diver; 14.03.2005 в 09:41.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 190
    Последнее: 10.05.2018, 18:52
  2. ZX Spectrum в кармане
    от CityAceE в разделе Эмуляторы
    Ответов: 79
    Последнее: 15.12.2007, 20:14
  3. ZX FAQ в эхе ZX.SPECTRUM, неточность.
    от RomanRom2 в разделе Пресса
    Ответов: 10
    Последнее: 25.08.2005, 16:40
  4. Софт и доки для сайта Spectrum 128k
    от DJ I-Kick в разделе Программирование
    Ответов: 0
    Последнее: 17.01.2005, 11:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •