Имидж-Процессинг

В: Какие показания (величины) должно возвращать каждое сканирующее устройство?
О: 1) переменное значение колонки x и строки y;
2) измеренное или предполагаемое значение Коэффициента q(x,y) = I/I0, где
I = Энергия Света, поступающего из точки x,y и 
I0 = Энергия Света, падающего на точку x,y.
3) Преобразование из q(x,y) в значение Серого gw(x,y), где 0 <= gw(x,y) <= 255.

В: Что такое 1) Сканирование Отражений? 2) Сканирование Трансмиссий? Примеры? 3) Сравнение?
О: 1) непрозрачные, не абсолютно черные объекты отражают Свет от каждой точки x,y под углом, равным углу падения (угол отражения). Примеры: Фотография, Радар, УЗИ.
2) Прозрачные объекты просвечиваются видимым Светом, непрозрачные Рентгеновским или Гамма лучами.
Примеры: Диафильмы, Кинофильмы, контроль багажа, рентген, компьютерная томография, микроскопы.
3)

СравнениеОтражение     Трансмиссия
Рассеянный Свет
Коэффициенты q(x,y) = I/I0
Энергозатраты 
Качество снимков


В: Сравнение     Фотосъемка                  Сканирование                         
Источник Света                                    
Оптика  
Подвижные части         
Сенсор(ы)  
x,y берут из  
Время работы  
Временное разрешение  
Пространственное разр.  
Рассеянный Свет  
Качество снимков  
О: СравнениеФотосъемкаСканирование
Источник СветанеизвестныйТочный = Flying Spot
Оптикавыпуклая линзанет
Подвижные частитолько затворИсточник Света
Сенсор(ы)Сенсорный массиводиночный фотоэлемент
x,y берут изСенсорного Массива  Позиция/Направление Лучей Света
Время работыкороткоедлинное
Временное разрешение
Пространственное разр.
Рассеянный Свет
Качество снимков


В: Какие принципы используются?ОтражениеТрансмиссияФотоСканнер
Радар    
Рентген    
Фотография    
Диапроектор, Кино    
LCD-Проектор    
DLP-Проектор    
Компьютерная Томография    
УЗИ    
О: Какие принципы используются?ОтражениеТрансмиссияФотоСканнер
РадарX  X
Рентген XX 
ФотографияX X 
Диапроектор, Кино XX 
LCD-Проектор XX 
DLP-ПроекторX X 
Компьютерная Томография X X
УЗИX  X


В: Что такое Run Length Code ?

О: = Run Length Code = RLC. Компрессия без потери качества, идеальна для бинарных изображений, где количество нулей и единиц передаются друг за другом, а пустая строка кодируется одним числом - количество точек в строке. При градациях Серого помимо счетчика передается и значение Серого. 

Высокий коэффициент компрессии текстов (Факсы). Низкий коэффициент для градаций Серого и цветных Изображений. 

В: Дано 4-х строчное Изображение B

    0011001000
И = 0101010000
    1010101001
    0111110000

Найти для каждой строки RunLengthCode без символов переноса. Посчитайте коэффициент компрессии.
О:
22213
1111114
0111111121
154

Компрессия = (25*16Bit * 100%) / 40Bit ≈ 1000 %, где
25 = 5+7+10+3 = Длина RLC
16 = Количество бит Типа UInt16
40 = бинарное Изображение имеет 4 Строки и 10 Колонок

В: При компрессии Растровых Изображений может проявляться Феномен, когда после Компрессии Изображение занимает больше памяти, чем до. В каких случаях это может случаться?
О: 1) на маленьких Изображениях (ICON),
2) на Изображениях с быстро меняющимися цветами,без гомогенных областей (например шахматная доска),
3) на Изображениях, которые уже сжаты компрессией → любая повторная компрессия дает плохой результат.

В: Дано 4-х строчное Изображение в градациях Серого G

    0011001

G = 0765750

    1556671

    0111110

Найти Гистограмму длиной 10.
О: 
H = [8,10,0,0,0,4,3,3,0,0]

В: Типичные и часто встречающиеся Гистограммы с коротким описанием.
О: 


В: Дано растровое Изображение в форме 2D-Массива байтов b[ySize,xSize]. Напишите код для построения Гистограммы.
О: int[] H = new int[256]; for ( int i=0; i<256; i++ ) H[i] = 0;
for ( int y = 0; y < ySize; y++ ) for ( int x = 0; x < xSize; x++ ) H[b[y,x]]++;


В: Дано растровое Изображение в форме 2D-Массива байтов b[ySize,xSize]. Напишите код для Бинаризации с помощью Предельного Значения s.
О: for ( int y = 0; y < ySize; y++ ) for ( int x = 0; x < xSize; x++ )
     if ( b[y,x] < s ) b[y,x] = 0; else b[y,x] = 255;


В: Дано растровое Изображение через указатель Byte* p на первый Пиксель и количество Пикселей xSize*ySizeНапишите код для построения Гистограммы.
О: int[] H = new int[256]; for ( int i=0; i<256; i++ ) H[i] = 0;
for ( int i = 0; i < xSize*ySize; i++ ) H[*(p+i)]++;


В: Дано растровое Изображение через указатель Byte* p на первый Пиксель и количество Пикселей xSize*ySize. Напишите код для Бинаризации с помощью Предельного Значения s.
О: for ( int i = 0; i < xSize*ySize; i++ )
    if (*(p+i) < s) *(p+i) = 0; else *(p+i) = 255;


В: Часто встречающиеся технические ошибки Изображений?
О: Шум, плохой Контраст, Затенение, размытость из-за движений камеры или объекта, размытость из-за загрязнений объектива, цветовые ошибки.

В: Определение Контраста? Причины плохого Контраста и метод его коррекции?
О: Контраст = ( maxЗначение - minЗначение ) * 100% деленное на 255. Плохой Контраст = отсутствие значений в верхнем диапазоне (Недоосвещенное) или в нижнем диапазоне (Переосвещенное) или на обоих краях диапазона Гистограммы. Коррекция = Повышение Контрастности - растяжение Гистограммы.

В: Определение 2D-Image-Shading (IS)? Причины IS? Какая проблема возникает из-за IS? Что такое 3D-Graphics-Shading GS?
О: IS = аддитивное наложение на идеальное Изображение I(x,y) медленно растущей или падающей функции Рампы S(x,y).
Причина: неравномерное освещение. Проблема: IS препятствует отделению объекта от Фона через Предельное Значение threshold.
GS = Затенение 3D-Площадей при косом освещении методом Flat или Gouraud или Phong.
Опасность путаницы: GS не имеет ничего общего с IS!

В: Определение Шума? Причины и методы подавление Шума?
О: Шум = аддитивное наложение на идеальное Изображение I(x,y) случайной функции N(x,y): B(x,y) = I(x,y) + N(x,y). Причины: Броуновское молекулярное движение, спонтанный (независимый от Света) разрыв заряда в сенсорной матрице, случайные помехи при преобразовании, при Усилении, при Транспортировке, при магнитной записи аналогового сигнала. Подавление: Охлаждение сенсорной матрицы, использование АЦП, повышение качество носителя. Исправление: Низкочастотный фильтр.

В: Определение Размытости? Причины и методы исправления Размытости?
О: Сдвиг и смешивание значений соседних Пикселей = Расфокусировка = Blurring.
Причины: a) плохая фокусировка, b) слишком долгое засвечивание подвижной Цели, с) рассеянный свет - дифракция на загрязненной или поцарапанной оптике.
Исправление возможно, если применим соответствующий Высокочастотный Фильтр.

В: Преобразуйте цветное Изображение bmp в градации Серого (C# или Псевдокод).
О 1
for all pixel in bmp
{ pixel.R = pixel.G = pixel.B = (pixel.R + pixel.G + pixel.B) / 3; }

O 2:

for ( int y = 0; y < bmp.Height; y++ )
  for ( int x = 0; x < bmp.Width; x++ )
  { Color col = bmp.GetPixel( x, y );
    int gray = ( col.R + col.G + col.B ) / 3;
    bmp.SetPixel( x, y, Color.FromArgb( gray, gray, gray ) );
  }

В: Для чего используется Низкочастотный Фильтр? Методы усиления эффекта Размытости?
О: Для подавления Шума и создания искусственного Пустого Изображения для коррекции Затенения.
Эффект Размытости растет если:
1. Все соседи равновесны - уравнять вес центра с соседями.
2. Увеличить Матрицу фильтра M*N.
3. Каскадировать = многократная последовательная проходка.

В: Что такое Фильтр Усреднения? Почему ФУ размером 3x3 так популярен?
О: Низкочастотный фильтр, в котором все элементы имеют единичный вес. 3x3 ФУ очень быстрый, т.к. экономится время на 9-ти операциях умножения на единицу. Нужно лишь сложить 9 значений Серого под матрицей фильтра и разделить эту сумму на 9. Результат: подавление Шума, но повышение Размытости.

В: Что такое весовой Низкочастотный Фильтр? Плюс? Пример Ядра? Пример Ядра, не влияющего на оригинальное Изображение?
О: Значение или Значения в середине Ядра имеют вес больше 1. Результат: влияние Фильтра слабее, чем при обычном НЧ Фильтре. Плюс: низкочастотное фильтрование более контролируемое.

                1 1 1                   1  1  1
Example Кernel: 1 7 1;  useless Kernel: 1 999 1
                1 1 1                   1  1  1

В: Что такое Фильтр Гаусса?
О: Низкочастотный Фильтр с Гауссовским (3D колокол) распределением весов - формула распределения kernel[yy,xx] = e-d2/a.

В: Что такое Высокочастотный и Полосовой Фильтры?
О: Высокочастотный фильтр содержит позитивные и негативные веса в Ядре. Он тянет все гомогенные области вниз (обычно к нулю), неважно какие это области светлые или темные, и усиливает разницу Значений = выделяет границы объектов.
Полосовой Фильтр - это комбинация из Низкочастотного (позитивные значения в центре Ядра) и Высокочастотного (негативные значения на границе Ядра в виде мексиканской шляпе) - она усиливает Объекты на Изображении и подавляет все остальные структуры.


В: Что такое Градиентный Фильтр? Пример: Собель-Фильтр? 
О: Градиентный фильтр имеет два ортогональных Ядра k1 и k2 с 9-ю значениями.
2 Ядра ведут к 2-м Результатам s1 и s2 на каждый Пиксел. Можно представить (s1,s2) как Вектор в направлении наиболее сильного изменения = Градиент. В результирующем Изображении записывается значение sqrt(s1*s1 + s2*s2) = Значение Градиента.

              +1 +2 +1       +1  0 -1
Sobel:   k1 =  0  0  0  k2 = +2  0 -2  //самый популярный Фильтр
              -1 -2 -1       +1  0 -1


В: Нелинейный Низкочастотный Фильтр? Плюс? 2 примера с коротким объяснением?
О: Не подчиняется принципу Свертки → благодаря чему подавляет Шум без Размывания.
Медианный Фильтр: Значения Серого сортируются в линейном массиве. new[y,x] = Новое Значение в центре Массива.
Сигма-Фильтр: Выборочное усреднение Значений Серого, игнорируя сильные отклонения:
if ( Math.Abs(alt[y,x]-alt[y+yy,x+xx]) <= sigma ) add_it_to_Summe; else forget_it;