• Регистрация
Anastasia1111
Anastasia1111 +4.36
н/д

СТАТИСТИЧЕСКИЙ АНАЛИЗ ЦИФРОВЫХ ИЗОБРАЖЕНИЙ

22.03.2021

Мультимеда технологии. Цифровая обработка изображений. Статистический анализ цифровых изображений формата 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), формирующий изображение.

Результаты исследования:

Выводы при исследовании индивидуального задания:

  1. При использовании формата bmp-1 изображение получается двуцветным (битональным).
  2. Для форматов битностью ниже 8 необходима запись в файл цветовой палитры и массива используемых цветов.
  3. При использовании формата bmp-1 на представление одного пикселя затрачивается 1 бит.
  4. Размер файла bmp-1 в сравнении с размером файла bmp-24 примерно в 24 раза меньше.

 

7 Выводы, сформированные на основе полученных результатов

  1. Изображение в формате RGB24 содержит информацию о каждом пикселе в виде трёх компонент R, G, B. Значения корреляционной функции между этими компонентами близки к 1.
  2. Значения автокорреляционной функции каждой из компонент уменьшаются при смещении выборок друг от друга.
  3. Преобразование изображения в формат YCbCr даёт возможность уменьшить размер необходимой для хранения этого изображения памяти путём прореживания цветоразностных компонент Cb, Cr. Децимация изображения путём нахождения среднего арифметического окружающих пикселей показала лучшие результаты, чем путём копирования соседних пикселей (Рис. 5, 6). Это связано с тем, что при нахождении среднего мы используем гораздо бОльшее количество информации, чем при копировании соседних.Существуют различные способы децимации. Используя копирование соседних пикселей, при децимации по 4-м пикселям уже видны существенные искажения. То же самое отражают и значения PSNR. Они оказываются больше при выборе децимации путём нахождения среднего арифметического, чем при копировании соседей.
  4. По гистограммам частот (Рис. 7) видно, что диапазон значений компонент Cb и Cr значительно меньше, чем у остальных. Таким образом, согласно значениям энтропии компоненты Cb, Cr используют лишь 4-5 бит, когда как все компоненты RGB используют 7-8 бит. Следовательно, формат представления YCbCr выигрывает у RGB по затратам на хранение пикселя.
  5. Для всех гистограмм (Рис. 8-13) справедливо следующее: формирование разности по правилу 4 даёт гистограмму с наименьшей шириной. В отличии от гистограмм значений компонент, где виден вес цветовой диапазон, здесь можно наглядно увидеть степень схожести соседних пикселей в изображении.
  6. У всех полученных результатов при оценке числа бит при поэлементном независимом сжатии массивов разностей наблюдается выигрыш по 4 способу формирования разности. Сравнивая со значениями энтропии, можно сказать, что такой способ модуляции изображения значительно выигрывает по количеству бит передаваемой информации.
  7. При использовании формата bmp-1 изображение получается двуцветным (битональным). При использовании такого формата на представление одного пикселя затрачивается 1 бит, так как используется палитра используемых цветов. Палитра записывается массивом структур (RBGQUAD). Размер файла, полученного в результате выполнения индивидуального задания, в сравнении с размером исходного файла (в формате bmp-24) примерно в 24 раза меньше.

Теги

    22.03.2021

    Комментарии

    • G736_em11
      G736_em110.00
      23.03.2021 14:53

      А гистограммы частот, ваши, вы можете превратить равноточно в функции явного вида n-гладкости, где 9 <n<50 ? Если нет, то к чему эти ваши изложения, из который не ясно и зачем столько усердия ? Какова цель была, где на нее ответ, в чем задача состояла, где маиематическое описание задачи ? Пустые хлопоты я бы не стал делать без постановки задачи. 

      • Anastasia1111
        Anastasia1111+4.36
        24.03.2021 10:29

        Добрый день. Суть данного исследования, как вы могли заметить, СТАТИСТИЧЕСКИЙ анализ изображений. Гистограммы (рисунки 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 бит на цвет. В

        • adeli
          adeli0.00
          25.03.2022 21:48

          Здравствуйте, разбирала ваш код. У меня возник вопрос: в структуре IH у вас есть поле tmp. За что оно отвечает?