Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерная графика / Lab3_Preobr_yarkosti

.pdf
Скачиваний:
55
Добавлен:
03.03.2016
Размер:
1 Mб
Скачать

Преобразование яркости графических изображений

11(23)

Например,

y=imread('cliff.jpg'); imshow(y), pixval

figure, imshow(y(:,:,1), [ ]), pixval figure, imshow(y(:,:,2), [ ]), pixval figure, imshow(y(:,:,3), [ ]), pixval

Если функция imshow используется для вывода в одном графическом окне изображений разного типа с разными цветовыми картами, то атрибуты цвета установятся по всему окну одинаковыми и заданными последним выводом. Такой недостаток отсутствует в функции subimage. Например (рис.4)

[X1,map1]=imread('forest.tif');

[X2,map2]=imread('trees.tif'); subplot(1,2,1), subimage(X1,map1) subplot(1,2,2), subimage(X2,map2)

Рис.4 Пример вывода изображений с разными цветовыми картами

2.3 Запись изображений

Изображения записываются на диск функций imwrite. Типовой формат команды имеет вид imwrite(y, 'filename', fmt), где y – матрица изображения, filename - имя графического файла, fmt - допустимое расширение. Например,

команда

imwrite(y, ‘auto’, ‘bmp’)

записывает матрицу y в файл формата bmp с именем auto и размещает его в рабочей папке. Аналогичные действия выполняются командой

imwrite(y, ‘auto.bmp’)

Эти команды должны указывать на расширение файла, поддерживаемое систе-

мой MATLAB и перечень которых приведен в описании системы.

В зависимости от выбранного формата функция imwrite может иметь и

12(23)

Преобразование яркости графических и зображений

другие параметры. Например, применительно к файлам формата JPEG команда может иметь вид:

imwrite(y, ‘auto.jpg’, ‘quality’, q)

где q – целое число в интервале от 0 до 100 (чем меньше число, тем больше сте-

пень искажения при сжатии файла в формате JPEG).

При работе с изображениями формата tif:

imwrite(y,‘filename.tif’,‘compression’,‘parameter’,‘resolution’,[colres rowres])

где ‘parameter’ может иметь только следующие значения: ‘none’ - отсутствие сжатия, ‘packbits’ – сжатие используется по умолчанию для небинарных фай-

лов, ‘ccitt’ - сжатие используется по умолчанию для бинарных файлов. Массив [colres rowres] размера 1х2 содержит две целые переменные, которые сообща-

ют разрешение, соответственно, по столбцам и по строкам в точках на условную единицу (по умолчанию [72,72]). Например, если размер изображения указан в дюймах, то colres - число точек (пикселов) на дюйм (dpi – dot per inch) по вер-

тикали, и, соответственно, rowres - разрешение по горизонтали.

Например, командами

z=imread('handkey.jpg'); imwrite(z,'handkey2.tif','compression','none','resolution',[300 300]);

исходное изображение из файла считывается в матрицу z, а затем записывается в файл handkey2.tif. Исходное изображение записано в формате jpg с разреше-

нием 200dpi и имеет размеры 353х230 пикселей (4.5х2.9см). В результате пере-

записи изображение имеет формат tif , те же пиксельные размеры 353х230, но размер изображения уменьшен до значения 3х1.9см по причине более плотного расположения точек, т.е. пикселей (вначале 200 точек в дюйме, по окончании -

300), общее количество которых не изменилось.

Тот же результат может быть получен следующей командой:

res=round(200*4.5/3);

imwrite(z,'handkey3.tif','compression','none','resolution',res);

Сохранить изображение в том же виде, в котором оно представлено на экране монитора можно командами Export, выбрав ее из ниспадающего меню

File в окне изображений, и print:

print -fno -dfileformat -rresno filename

Преобразование яркости графических изображений

13(23)

где no – номер окна интересующего изображения, fileformat – один из допустимых форматов изображения, resno – разрешение в dpi, filename – имя файла.

Например,

print -f1 -dtiff -r300 hy_handkey

Если ограничиться только набором команды print, то последнее окно изображе-

ния будет распечатано на принтере.

2.4 Запрос данных о файле

Для оценки степени достигнутого сжатия и получения дополнительной информации о файле используется функция imfinfo, которая имеет вид

imfinfo filename

Например, последовательность команд

imwrite(y, ‘auto.jpg’, ‘quality’, 10) imfinfo auto.jpg

выдает следующую информацию:

Filename: 'auto.jpg'

FileModDate: '16-Feb-2009 13:07:50' FileSize: 3866

Format: 'jpg' FormatVersion: ''

Width: 328

Height: 220

BitDepth: 24 ColorType: 'truecolor'

FormatSignature: '' NumberOfSamples: 3

CodingMethod: 'Huffman'

CodingProcess: 'Sequential' Comment: {}

Размер файла FileSize указан в байтах. Для определения количества бай-

тов в исходном изображении надо перемножить значения Width, Height BitDepth, а результат разделить на 8, т.е. 328х220x24=1731840/8=216480.

Для оценки степени сжатия следует полученный результат разделить на размер файла, т.е. 216480/3866=55.9959.

Данные, выводимые функцией imfinfo, можно занести в структурные пе-

ременные и использовать их в дальнейшем. Например, следующие команды за-

14(23)

Преобразование яркости графических и зображений

носят данные о файле в переменную K и рассчитывают степень сжатия:

K = imfinfo (‘auto.jpg’); image_bytes=K.Width*K.Height*K.BitDepth/8; compressed_bytes=K.FileSize; compressed_ratio=image_bytes/ compressed_bytes compressed_ratio = 55.9959

3 ПОЭЛЕМЕНТНЫЕ ПРЕОБРАЗОВАНИЯ

3.1.Изменение яркости пикселей

Впростейшем варианте преобразования изображений окрестность имеет размер 1х1, т.е. состоит из одного центрального пиксела. В таком случае значе-

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

сти соответствующего пиксела входного изображения, что применительно к монохромным изображениям предполагает градационное преобразование.

Для преобразования яркости полутоновых изображений в системе MATLAB используется функция imadjust:

g= imadjust(f, [low_in high_in], [low_out high_out], gamma)

Функция преобразует значения яркости из интервала [low_in, high_in] в интервал [low_out, high_out]. Значения, меньшие порогового уровня low_in, прирав-

ниваются значению low_out, а большие порогового уровня high_in - приравни-

ваются значению high _out. Входное изображение может иметь класс uint8, uint16 или double, а класс выходного совпадает с классом входного. Все входные параметры функции imadjust, за исключением f, должны быть веществен-

ными числами в интервале от 0 до 1, независимо от класса f. Если f принадлежит классу uint8 (или uint16), то функция imadjust умножает эти параметры на

255 (или 65535). Если вместо вектора указан пустой вектор, то используются величины по умолчанию, равные [0 1].

Если high_out меньше, чем low_out, то выходные яркости симметрично переворачиваются.

Параметр gamma служит для указания закона преобразования (рис.5).

Преобразование яркости графических изображений

15(23)

Рис.5 Варианты преобразований в функции imadjust

Следующие команды формируют негативное изображение (рис.6):

f=imread('moon.tif'); imshow(f, [ ]) % Позитив fneg=imadjust(f, [0 1], [1 0]);

figure; imshow(fneg, [ ]) % Негатив

а) б) в) г) Рис.6 Преобразование изображения функцией imadjust

На рис.6в показан результат выполнения команды

g2=imadjust(f, [0.5 0.75], [1 0]);

На рис.6г показан результат выполнения команды

g3=imadjust(f, [ ], [ ], 2);

Негативное изображение формируется также функцией imcomplement:

figure; imshow(imcomplement(f), [ ])

3.2.Логарифмическое преобразование яркости

Спомощью выражения

g = c * log(1 + double(f))

где c – некоторая константа, в системе MATLAB возможно выполнение лога-

рифмических преобразований. Закон преобразования аналогичен закону преоб-

16(23)

Преобразование яркости графических и зображений

разования в функции imadjust при gamma<1, но с зафиксированной кривизной графика и при граничных выходных значениях, равных 0 и 1.

Логарифмическое преобразование успешно применяется при сжатии ди-

намического диапазона с целью улучшения визуализации изображений. Напри-

мер, следующие команды переводят изображение из диапазона [0…1.5x106] в

изображение с диапазоном [0…255] (рис.7):

g = im2uint8(mat2gray(log(1 + double(f)))); imshow(g)

Функция mat2gray переводит величины в диапазон [0,1], а функция im2uint8 преобразует их к диапазону [0, 255].

Рис.7 Изображение до и после логарифмического преобразования

3.3. Изменение контрастности

Команда

g=1./(1 + (m./(double(f) + eps)).^E)

позволяет изменить контрастность изображения. В результате выполнения ко-

манды формируется изображение с большей контрастностью.

Команда сжимает входные величины, меньшие m, в более узкий поддиапазон темных уровней на выходном изображении, и величины, боль-

шие m - в более узкую полосу ярких уровней

(рис.8). Параметр E устанавливает наклон функции, например E=20 или 5 (рис.9).

Рис.8 Закон преобразования контрастности

Преобразование яркости графических изображений

17(23)

Рис.9 Примеры преобразования контрастности

4 ЭКВАЛИЗАЦИЯ ГИСТОГРАММ Результат эквализации изображения заключается в увеличении динамиче-

ского диапазона уровней яркости, что обычно означает большую контрастность выходного изображения. В случае дискретного представления данных методика сводится к эквализации гистограмм изображений.

Пусть pr rj , j=1, …, L, обозначает гистограмму уровней яркости некото-

рого исходного изображения. Величины нормированной гистограммы являются приближениями вероятностей появления каждого уровня яркости на изображе-

k

 

k

n j

 

нии. Преобразование эквализации имеет вид: sk T rk pr

rj

 

при

n

j 1

 

j 1

 

k=1, …,L, где sk – величина яркости обработанного изображения, соответству-

ющая значению яркости rk исходного изображения.

Эквализация гистограмм реализуется функцией histeq: g=histeq(f, nlev),

где f – исходное изображение, nlev – число уровней интенсивности, установ-

ленное для выходного изображения. Если nlev=L, т.е. общему числу возможных уровней исходного изображения, то реализуется функция преобразования T rk .

Если nlev<L, то уровни перераспределяются таким образом, чтобы обеспечить плоскую гистограмму. По умолчанию nlev равно 64.

18(23)

Преобразование яркости графических и зображений

Например, на рис.10а представлена фотография пыльцы, сделанная на электронном микроскопе (увеличение примерно в 700 раз), а на рис.10б – его гистограмма. Изображение является очень темным и имеет узкий динамический диапазон значений яркости (гистограмма полностью расположена в темном участке спектра).

Изображение на рис.10в является гистограммной эквализацией исходного изображения. В результате преобразования повысилась средняя яркость и улучшилась контрастность (рис.10г). Изменение контрастности вызвано суще-

ственным расширением динамического диапазона на всю шкалу яркости.

imshow(f) figure, imhist(f) ylim('auto') g=histeq(f,256);

figure, imshow(g) figure, imhist(g) ylim('auto')

18000

 

 

 

 

 

16000

 

 

 

 

 

14000

 

 

 

 

 

12000

 

 

 

 

 

10000

 

 

 

 

 

8000

 

 

 

 

 

6000

 

 

 

 

 

4000

 

 

 

 

 

2000

 

 

 

 

 

0

 

 

 

 

 

0

50

100

150

200

250

а)

 

 

б)

 

 

18000

16000

14000

12000

10000

8000

6000

4000

2000

0

0

50

100

150

200

250

в) г)

Рис.10 Пример эквализации гистограммы

Преобразование яркости графических изображений

19(23)

Вид функции преобразования предыдущего изображения показан на рис.11 и получен при выполнении следующих команд:

Output intensity

1

0.8

0.6

0.4

0.2

00

 

 

 

 

 

 

hnorm=imhist(f)./numel(f);

 

 

 

 

 

 

 

 

 

 

 

 

sdf=cumsum(hnorm);

 

 

 

 

 

 

x=linspace(0, 1, 256);

 

 

 

 

 

 

plot(x, sdf);

Transformation function

 

 

 

 

axis([0 1 0 1]);

 

 

 

 

set(gca, 'xtick', 0:.2:1)

 

 

 

 

 

 

 

 

 

 

 

 

set(gca, 'ytick', 0:.2:1)

 

 

 

 

 

 

xlabel('Input intensity', 'fontsize', 9)

 

 

 

 

 

 

ylabel('Output intensity', 'fontsize', 9)

 

 

 

 

 

 

text(0.18, 0.5, 'Transformation function',

0.2

0.4

0.6

0.8

1

Input intensity

'fontsize', 9)

Рис.11 Функция преобразования

Во многих приложениях необходимо получить изображение с заданной формой гистограммы. Такой процесс называется гистограммной подгонкой или гистограммной спецификацией и реализован в функции histeq со следующим вариантом синтаксиса:

g=histeq(f, hspec),

где hspec - заданная гистограмма (вектор-строка), состоящая из целых чисел,

соответствующих одинаковым разбиениям диапазона уровней.

Например, на рис.12а показано изображение спутника Марса Фобоса, а на рис.12б – его гистограмма, полученная функцией imhist(f). Обработка командой histeq(f, 256) существенно не улучшает качество (рис.12в). Поэтому необхо-

димо задать гистограмму, позволяющую качественно улучшить изображение.

Для данного примера гистограмма должна иметь меньшую концентрацию ком-

понент в нижней части градационной шкалы, но при этом сохранять общую форму гистограммы исходного изображения, которая имеет два четко выделен-

ных активных участка – возле нулевого значения и в верхней части градацион-

ной шкалы.

Такой тип гистограмм можно смоделировать с помощью нормированных мультимодальных гауссовых функций. В любом случае, первоначально задача сводится к формированию вектор-строки hspec.

20(23)

Преобразование яркости графических и зображений

 

4.5

x 105

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

50

100

150

200

250

а)

 

 

 

 

 

 

б)

 

 

 

 

 

 

 

 

 

4.5

x 105

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

50

100

150

200

250

в)

 

 

 

 

 

 

г)

 

 

 

 

 

 

 

 

 

Рис.12 Пример эквализации гистограммы

Для рассматриваемого примера улучшение изображения обеспечивается

при заданной гистограмме, закон изменения которой показан на рис.13а. Значе-

ния соответствующей вектор-строки равны:

hspec =

 

 

 

 

 

 

 

0.0019

0.0019

0.0020

0.0020

0.0021

0.0022

0.0024

0.0025

0.0027

0.0029

0.0031

0.0034

0.0037

0.0040

0.0044

0.0048

0.0053

0.0058

0.0064

0.0070

0.0077

0.0084

0.0091

0.0099

0.0106

0.0114

0.0122

0.0130

0.0138

0.0145

0.0152

0.0159

0.0165

0.0170

0.0175

0.0179

0.0181

0.0183

0.0184

0.0184

0.0182

0.0180

0.0177

0.0173

0.0168

0.0162

0.0156

0.0149

0.0142

0.0134

0.0126

0.0118

0.0110

0.0102

0.0095

0.0087

0.0080

0.0073

0.0067

0.0061

0.0056

0.0051

0.0046

0.0042

0.0039

0.0035

0.0032

0.0030

0.0028

0.0026

0.0024

0.0023

0.0022

0.0021

0.0020

0.0019

0.0019

0.0018

0.0018

0.0018

0.0018

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

0.0017

Соседние файлы в папке Компьютерная графика