- •Методы обработки изображений в пространственной области.
- •1. Изменение контраста и яркости.
- •2. Видоизменение гистограмм яркостей
- •3. Обработка изображений с использованием методов фильтрации.
- •2. Алгоритмы цифровой обработки изображений реализованные в программном модуле «Обработка изображений» .
- •3.2.2. Описание алгоритмов инвертирования изображений, изменения контрастности и яркости, преобразования изображений с помощью равномерной эквализации гистограмм яркости.
- •3.2.2.2.Алгоритм получения негатива изображения.
- •3.2.2.3. Алгоритм изменения контрастности и яркости изображения.
- •3.2.3. Алгоритм двумерной пространственной фильтрации изображений.
- •Методы сегментации изображений
- •Метод сегментации на основе пороговой обработки
- •Метод сегментации на основе кластер-анализа
- •Вычислительные соотношения алгоритма кластер анализа
3.2.2.2.Алгоритм получения негатива изображения.
Выход: LUT-таблица для получения негатива.
Begin
; цикл по всем градациям интенсивности
For i:=0 to 255 do LUT[i]:=255-i
End;{ Inverse }.
3.2.2.3. Алгоритм изменения контрастности и яркости изображения.
Вход: Alfa, beta - коэффициенты, входящие в формулу преобразования LUT-таблицы для изменения контрастности и яркости изображения.
Выход: LUT-таблица для получения негатива.
Begin
; цикл по всем градациям интенсивности
For i:=0 to 255 Do
If alfa*i+beta<0
Then LUT[i]:=0
Else
Begin
; вычисление новой интенсивности
intens:=round(alfa*i+beta);
if (intens>=0) and (intens<=255)
then LUT[i]:=byte(intens);
if intens>255 then LUT[i]:=255;
if intens<0 then LUT[i]:=0;
End;
End {contrast}.
3.2.2.4. Алгоритм построения гистограммы изображения.
Вход: WorkMatr[1..100,1..210] – исходная матрица изображения;
Выход: Hist[0..255] – массив распределения интенсивности изображения;
begin
;обнуление вектора гистограммы
For i:=0 to 255 do
hist[i]:=0;
; подсчет гистограммы
For i:=1 to 100 do
For j:=1 to 210 do
begin
index := WorkMatr[i,j]
INC ( hist[index] )
end
end
3.2.2.5. Алгоритм эквализации гистограммы изображения.
Вход: WorkMatr[1..100,1..210] – исходная матрица изображения;
hist[0..255] - гистограмма исходной матрицы изображения;
q - коэффициент эквализации;
Выход: Hist[0..255] – массив распределения интенсивности изображения;
begin
; начальная установка
sum:=hist[0]/21000;
LUT[0]:=0;
if q=1
then
; вычисление по упрощенной формуле
; сумма по всем градациям интенсивности
else
if hist[i]>0 then
intens:=round(255*sum);
If intens=256 then LUT[i]:=255
else LUT[i]:=byte(intens);
end.
3.2.3. Алгоритм двумерной пространственной фильтрации изображений.
Каждый элемент f out ( i , j) выходной матрицы интенсивности получается путем применения линейного преобразования к вектору
F (i,j) (см. Рис.9.).
|
Рис.3.9. Цифровая фильтрация изображения.
где W - ядро пространственной фильтрации, а .
Приведем алгоритм двумерной пространственной фильтрации изображений на псевдокоде.
Вход: WorkMatr[1..100,1..210] – исходная матрица изображения;
Dim – размерность скользящего окна (должна быть 3, 5 или 7);
Выход: WokMatrNew[1..100,1..210] – матрица фильтрованного изображения;
begin
; радиус скользящего окна
shift := dim div 2;
; расширение исходной матрицы изображения
; фильтрация
max_sum:=0;
min_sum:=0;
For i:=1 to 100 do
For j:=1 to 210 do
begin
max_sum := MAX(max_sum, sum)
min_sum := MIN ( min_sum, sum)
WorkMatrNew[i,j] := sum
end
; нормировка WorkMatrNew к формату gray-scale, т.е. значения матрицы от 0 до 255
For i:=1 to 100 do
For j:=1 to 210 do
WorkMatrNew[i,j]:=ROUND(((WorkMatrNew[i,j]-min_sum)/(max_sum-min_sum))*255)
end.
3.2.4. Алгоритм медианной фильтрации изображения.
Вход: WorkMatr[1..100,1..210] – исходная матрица изображения;
Dim – размерность скользящего окна (должна быть 3, 5 или 7);
Выход: WokMatrNew[1..100,1..210] – матрица фильтрованного изображения;
begin
; радиус скользящего окна
shift := Dim div 2;
; расширение исходной матрицы изображения
For i:=1 to 100 do
For j:=1 to 210 do
begin
; запись элементов окна фильтрации в одномерный массив
count:=0 ;число элементов в окне фильтрации
for i1:= -shift to shift do
for j1:= -shift to shift do
begin
INC(count)
; вспомогательный одномерный массив
arr_aux[count]:=IntMExt[i+i1,j+j1]
end
end
; упорядочивание одномерного массива по возрастанию
; упорядочивается только половина массива , т.к. нас интересует только
; центральный элемент
ind_max:=1
count1:=((dim*dim) div 2 ) + 1
for i:=1 to count1 do
begin
max:=0
count2:=dim*dim-i+1
for j:=1 to count2 do
begin
max := MAX(max,arr[j])
ind_max := ARG MAX (max,arr[j])
end
arr[ind_max]:=arr[count2]
end
WorkMatrNew[i,j] := max ; элемент после выхода из цикла является центральным
еnd.
Примеры преобразования изображений
Исходный сигнал Исходное изображение Преобразование "Негатив"
Усиление контраста Изменение яркости Изменение яркости и
контраста
Преобразование Изображение с точечными Резудьтат медианной
Эквализация Гистограммы дефектами фильтрации
Преобразование НЧ-фильтрация Преобразование ВЧ-фильтрация