СТАТИСТИЧЕСКИЙ АНАЛИЗ ЦИФРОВЫХ ИЗОБРАЖЕНИЙ
Мультимеда технологии. Цифровая обработка изображений. Статистический анализ цифровых изображений формата BMP24.
1 Цель исследования
Изучение способов представления изображений, ознакомление со структурой формата BMP, анализ статистических свойств изображений, а также получение практических навыков обработки изображений.
2 Описание структуры формата RGB24
Изображение в формате RGB24 в системе хранится как BMP-файл. Файл BMP имеет следующую структуру:
- заголовок;
- палитра (отсутствует в RGB24);
- данные по пикселям.
Для Windows BMP также характерно следующее:
- Данные представляются в виде одномерного массива, в котором значения, относящиеся к отдельным пикселям, записаны строка за строкой.
- Строки изображения могут идти как сверху вниз, так и снизу вверх.
- Ширина строки в байтах должна быть выравнена по границе двойного слова (32 бита). При необходимости в конце каждой строки добавляются дополнительные байты.
- Каждый пиксель в формате RGB24 представляется тремя байтами. Первый содержит значение компоненты G, второй – B, третий – R.
Заголовок в BMP файле состоит из двух структур: BITMAPFILEHEADER и BITMAPINFOHEADER.
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
В данном исследовании использовались поля структуры tagBITMAPINFOHEADER:
- LONG biWidth – ширина изображения в пикселях.
- LONG biHeight – высота изображения в пикселях.
Данные поля использовались для преобразований массива значений пикселей в матрицу.
3 Описание алгоритма чтения и записи файла BMP RGB24
Чтение файла происходит посредством потокового чтения байтов в поля структур, описанных в пункте 2. Размеры полей выбраны в соответствии со стандартом библиотеки Windows.h. После прочтения заголовка происходит запись в массивы B, G, R, поочерёдно считывая данные каждого пикселя.
Запись в файл осуществляется обратной операцией.
4 Результаты исследования
4.1 BMP файл был выбран из набора Kodak Image Set (kodim17)
4.2 Разложение изображения на цветовые компоненты
Данные изображения были получены по следующему правилу: байты, не относящиеся к сохраняемой компоненте, были обнулены.
4.3 Были вычислены корреляционные свойства компонент R, G, B
Correlation RG = 0.97775
Correlation GB = 0.98519
Correlation RB = 0.9334
Как видно из расчетов, корреляция между компонентами очень сильная. Это приводит к избыточности.
4.4 Были построены сечения трёхмерного графика оценки нормированной автокорреляционной функции rA,A(x,y).
4.5 Преобразование RGB24 в формат YCbCr
4.5.1 Значения корреляции:
Correlation Y-Cb = -0.28005
Correlation Y-Cr = -0.18457
Correlation Cb-Cr = -0.83004
4.5.2 Изображения компонент YCbCr:
4.5.3 Вычисление PSNR по восстановленным из формата YCbCr данных:
PSNR R = 108.5353
PSNR G = 71.2013
PSNR B = 110.575
При восстановлении клиппирование выполнялось 374 раза для компоненты G. На это и указывает значение PSNR. В целом, значения PSNR высокие, поэтому ошибок после восстановлений не обнаружено.
4.6 Децимация изображений
4.6.1. Децимация по 4 пикселям
Значение PSNR после восстановления (в скобках № способа децимации):
PSNR R for x4 (1) = 43.2484
PSNR G for x4 (1) = 50.3601
PSNR B for x4 (1) = 43.1131
PSNR R for x4 (2) = 46.4217
PSNR G for x4 (2) = 53.861
PSNR B for x4 (2) = 46.2314
PSNR Cb for x4 (1) = 46.7496
PSNR Cr for x4 (1) = 45.9379
PSNR Cb for x4 (2) = 49.9249
PSNR Cr for x4 (2) = 49.2152
Клиппирование при первом способе равно 1388, при втором 1447.
4.6.2 Децимация по 16 пикселям
Значение PSNR после восстановления (в скобках № способа децимации):
PSNR R for x16 (1) = 38.7127
PSNR G for x16 (1) = 45.6685
PSNR B for x16 (1) = 38.2159
PSNR R for x16 (2) = 42.8076
PSNR G for x16 (2) = 50.2242
PSNR B for x16 (2) = 42.531
PSNR Cb for x16 (1) = 42.6337
PSNR Cr for x16 (1) = 41.278
PSNR Cb for x16 (2) = 46.664
PSNR Cr for x16 (2) = 45.5914
Клиппирование при первом способе равно 1946, при втором 1609.
4.7 Гистограммы частот
4.8 Оценка числа бит при поэлементном независимом сжатии
Энтропия R = 7.2589
Энтропия G = 7.3826
Энтропия B = 7.2871
Энтропия Cb = 4.1125
Энтропия Cr = 4.0135
Энтропия Y = 7.3215
4.9 Диаграммы частот для массивов разностей DA(R)
4.10 Оценка числа бит при поэлементном независимом сжатии массивов разностей, сравнение значений с оценками энтропии соответствующих компонент
Энтропия R1 = 4.8558
Энтропия R2 = 4.7831
Энтропия R3 = 5.1536
Энтропия R4 = 4.7099
Энтропия G1 = 4.848
Энтропия G2 = 4.7689
Энтропия G3 = 5.1541
Энтропия G4 = 4.704
Энтропия B1 = 4.8059
Энтропия B2 = 4.7222
Энтропия B3 = 5.1061
Энтропия B4 = 4.6667
Энтропия Y1 = 4.8222
Энтропия Y2 = 4.743
Энтропия Y3 = 5.1253
Энтропия Y4 = 4.6798
Энтропия Cb1 = 1.6262
Энтропия Cb2 = 1.6137
Энтропия Cb3 = 1.9277
Энтропия Cb4 = 1.5956
Энтропия Cr1 = 1.737
Энтропия Cr2 = 1.6787
Энтропия Cr3 = 2.0177
Энтропия Cr4 = 1.7855
6 Результаты выполнения индивидуального задания
Формирование битонального изображения по порогу Thr. Если значение яркости пикселя превышает порог, то оно заменяется на максимальное (в нашем случае на 255), иначе на минимальное, т.е. на 0.
Для того, чтобы сформировать такое изображение, необходимо понимать, сколько бит нужно использовать на представление одного пикселя. Так как изображение битональное, достаточно использование одного бита на пиксель, т.е. формат bmp-1.
При таком формате (bmp-1) необходимо помимо основных структур записывать палитру:
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
где rgbBlue, rgbGreen и rgbRed – формируют цветовую палитру для массива используемых в файле цветов, а rgbReserved = 0.
Также, после формирования палитры, в файл записывается массив используемых цветов в формате последовательно записанных структур палитры. Например, для bmp-1 будут записываться 2 структуры с разными цветовыми компонентами:
fwrite(FID, 0, 'uint8');
fwrite(FID, 0, 'uint8');
fwrite(FID, 0, 'uint8');
fwrite(FID, 0, 'uint8');
fwrite(FID, 255, 'uint8');
fwrite(FID, 255, 'uint8');
fwrite(FID, 255, 'uint8');
fwrite(FID, 0, 'uint8');
При выполнении задания считывались данные исходного файла, для каждого пикселя считалось значение яркостной компоненты, и далее в зависимости от значения порога Thr записывался новый бит (0 или 1), формирующий изображение.
Результаты исследования:
Выводы при исследовании индивидуального задания:
- При использовании формата bmp-1 изображение получается двуцветным (битональным).
- Для форматов битностью ниже 8 необходима запись в файл цветовой палитры и массива используемых цветов.
- При использовании формата bmp-1 на представление одного пикселя затрачивается 1 бит.
- Размер файла bmp-1 в сравнении с размером файла bmp-24 примерно в 24 раза меньше.
7 Выводы, сформированные на основе полученных результатов
- Изображение в формате RGB24 содержит информацию о каждом пикселе в виде трёх компонент R, G, B. Значения корреляционной функции между этими компонентами близки к 1.
- Значения автокорреляционной функции каждой из компонент уменьшаются при смещении выборок друг от друга.
- Преобразование изображения в формат YCbCr даёт возможность уменьшить размер необходимой для хранения этого изображения памяти путём прореживания цветоразностных компонент Cb, Cr. Децимация изображения путём нахождения среднего арифметического окружающих пикселей показала лучшие результаты, чем путём копирования соседних пикселей (Рис. 5, 6). Это связано с тем, что при нахождении среднего мы используем гораздо бОльшее количество информации, чем при копировании соседних.Существуют различные способы децимации. Используя копирование соседних пикселей, при децимации по 4-м пикселям уже видны существенные искажения. То же самое отражают и значения PSNR. Они оказываются больше при выборе децимации путём нахождения среднего арифметического, чем при копировании соседей.
- По гистограммам частот (Рис. 7) видно, что диапазон значений компонент Cb и Cr значительно меньше, чем у остальных. Таким образом, согласно значениям энтропии компоненты Cb, Cr используют лишь 4-5 бит, когда как все компоненты RGB используют 7-8 бит. Следовательно, формат представления YCbCr выигрывает у RGB по затратам на хранение пикселя.
- Для всех гистограмм (Рис. 8-13) справедливо следующее: формирование разности по правилу 4 даёт гистограмму с наименьшей шириной. В отличии от гистограмм значений компонент, где виден вес цветовой диапазон, здесь можно наглядно увидеть степень схожести соседних пикселей в изображении.
- У всех полученных результатов при оценке числа бит при поэлементном независимом сжатии массивов разностей наблюдается выигрыш по 4 способу формирования разности. Сравнивая со значениями энтропии, можно сказать, что такой способ модуляции изображения значительно выигрывает по количеству бит передаваемой информации.
- При использовании формата bmp-1 изображение получается двуцветным (битональным). При использовании такого формата на представление одного пикселя затрачивается 1 бит, так как используется палитра используемых цветов. Палитра записывается массивом структур (RBGQUAD). Размер файла, полученного в результате выполнения индивидуального задания, в сравнении с размером исходного файла (в формате bmp-24) примерно в 24 раза меньше.
Комментарии
А гистограммы частот, ваши, вы можете превратить равноточно в функции явного вида n-гладкости, где 9 <n<50 ? Если нет, то к чему эти ваши изложения, из который не ясно и зачем столько усердия ? Какова цель была, где на нее ответ, в чем задача состояла, где маиематическое описание задачи ? Пустые хлопоты я бы не стал делать без постановки задачи.
Добрый день. Суть данного исследования, как вы могли заметить, СТАТИСТИЧЕСКИЙ анализ изображений. Гистограммы (рисунки 15-20) позволяют очень наглядно представить, как распределены биты в форматах BMP и YCbCr. Компоненты R, G, B занимают всю предоставленную "полосу значений", в то время как Y, Cb, Cr компоненты рассосредоточены - Y от 0 до ~210, Cb от ~117 до ~160, Cr ~95 до ~135. Формат JPEG основан на YCbCr представлении.
Исследуя его, можно сказать, что YCbCr убирает избыточность. Это же и показывает оценка энтропии (пункт 4.8) - для RGB24 необходимо в среднем 8+8+8=24 бита на цвет, в то время как для YCbCr необходимо в среднем 5+5+7=17 бит на цвет. В
Здравствуйте, разбирала ваш код. У меня возник вопрос: в структуре IH у вас есть поле tmp. За что оно отвечает?