Функции Image Toolbox / dither.php
.htmСписок функцийImage Processing Toolbox. Описание функции DITHER Семинары Обучение Лицензирование Разработка Подписка Форум Регистрация Matlab Toolboxes Simulink Blocksets Femlab Полезное Вход Обработка сигналов и изображений\image Processing ToolboxСписок функций Image Processing Toolbox: Преобразования типов изображений
В оглавление \ К следующему разделу \ К предыдущему разделу
DITHER Диффузионное псевдосмешение цветов Синтаксис:
Х=dither(RGB, map, Qm, Qe)
BW=dither(I)
Описание:
Функция Х=dither(RGB, map, Qm, Qe) создает палитровое изображение X с палитрой map из полноцветного изображения RGB, используя алгоритм Флойда-Стенберга диффузионного псевдосмешения цветов. Параметры Qm и Qe определяют скорость и точность работы алгоритма. Qm задает число бит для представления каждой из цветовых составляющих во вспомогательной таблице преобразования цветов, а Qe определяет точность вычисления ошибки - разницы между действительным значением цвета пиксела и ближайшим цветом в палитре. Qm может изменяться в диапазоне [1, 10] и должно быть меньше Qe. Qe может изменяться в диапазоне [1,31]. Если Qe < Qm, то псевдосмешения цветов не происходит. При вызове функции параметры Qm, Qe можно не указывать. По умолчанию Qm=5, Qe=8.
Если размер палитры mар меньше либо равен 256, то результирующее изображение Х имеет формат uint8, в противном случае оно имеет формат double.
Функция BW=dither(I) создает бинарное изображение BW из полутонового I, используя диффузионное псевдосмешение цветов. Результирующее изображение имеет формат uint8. Алгоритм:
Псевдосмешение (dithering) создает впечатление, что на изображении присутствует большее количество различных цветов (или градаций серого цвета в случае полутоновых изображений), чем есть на самом деле. Требуемый визуальный эффект достигается за счет группирования в локальной области пикселов с цветами, представленными в палитре, смешение которых дало бы близкий к необходимому цвет.
При реализации функции dither используется хорошо известный алгоритм Флойда-Стенберга [1]. В этом алгоритме пиксел изображения заменяет свой цвет на ближайший в евклидовой метрике из имеющихся в палитре и вычисляет ошибки цветности для каждой из цветовых составляющих, вычитая значения RGB-цвета палитры и значения RGB-цвета исходного изображения. Для полутоновых изображений вычисляется ошибка яркости. Затем ошибки распространяются на соседние пикселы путем добавления некоторой доли ошибки к значениям соответствующих составляющих и происходит так называемая диффузия ошибки. По этой причине алгоритмы подобного типа еще называют рассеиванием или распределением ошибки (error diffusion). Ошибки распространяются на правые и нижние соседние пикселы в следующих соотношениях, определяемых матрицей ,
где X обозначает пиксел, ошибка которого распространяется. Алгоритм применяется рекурсивно ко всем пикселам изображения при обходе матрицы изображения слева направо и сверху вниз.
Использование псевдосмешения цветов позволяет улучшить цветовое восприятие за счет ухудшения разрешения и повышения уровня ВЧ шумов.
Сопутствующие функции: RGB2IND, IMAPPROX.
Ссылки на литературу:
1. Роджерс Д. Алгорипшические основы машинной графики. М.: Мир, 1989.
В оглавление \ К следующему разделу \ К предыдущему разделу
I Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
II Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2004 г.) На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro E-mail: matlab@exponenta.ru Информация на сайте была обновлена 14.05.05 Copyright 2001-2005 SoftLine Co
Наши баннеры hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=58396&im=33&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("") >