|
|
||||||||||||||||||||||||||||||||
Вход |
Раздел "Обработка сигналов и изображений\ Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление книги \ К предыдущему разделу \ К следующему разделу Энтропия изображения Существует метод адаптивного преобразования локальных контрастов, в котором за параметр, характеризирующий скользящую окрестность, используется аналог энтропии [1]. С помощью энтропии можно характеризовать гладкость локальных окрестностей. Поэтому на основании меры априорной неопределенности значений яркостей элементов окрестности формируется функция преобразования локального контраста. Основные шаги реализации метода такие. Шаг 1. Вычисляем локальный контраст элемента изображения . Шаг 2. Для определения локальной энтропии изображения в скользящей окрестности с размерностью элементов и значениями используем выражение
где
Шаг 3. Вычисляем степенное преобразование локального контраста, которое в связи с использованием локальной энтропии приобретает адаптивный характер:
где , - максимальное и минимальное значения энтропии скользящей окрестности размером элементов. Шаг 4. Восстанавливаем изображение за выражением, которое определяется из выражения определения локального контраста. Отметим, что энтропия локальной окрестности изображения определяется как сумма произведений вероятностей элементов окрестности с различными значениями яркостей на логарифм этих вероятностей, взятая с противоположным знаком. Согласно выражению (2) значение яркости следует воспринимать как вероятность яркости -го элемента окрестности. При таком подходе формула (1) для определения энтропии окрестности не отвечает общепринятому определению вероятностной энтропии, а является одной из разновидностей невероятностной энтропии. Согласно выражению (1), локальную окрестность следует рассматривать как некоторую сложную систему, состоящую с простых подсистем - элементов окрестности, и уже с этих позиций искать энтропию окрестности. Кроме того, такой подход для определения энтропии локальной окрестности требует значительных вычислительных затрат. Для повышения эффективности описанного метода предложено использовать классический вероятностный подход к определению энтропии. Тогда в описанном выше алгоритме шаг 2 будет состоять в вычислении за выражением (1), но с вычислением вероятностей как
где - значение гистограммы для элемента с значением яркости . Кроме этого нами предложено выражение преобразования локального контраста для модификации шага 3 известного подхода
где - параметр нелинейного усиления контраста. Предложенный метод обработки максимально эффективный для изображений, которые имеют равномерную гистограмму распределения яркостей и не содержат шума. На основании визуального и количественного анализа результатов экспериментальных исследований отметим, что предложенный метод является более эффективным в сравнении с известными методами этого класса. Использование среднеквадратического отклонения значений яркостей элементов окрестности в методах контрастирования изображений Выше была рассмотрена известная трехэтапная технология повышения контрастности изображения. Однако она недостаточно учитывает адаптацию к локальным особенностям изображения. Для устранения этого недостатка предложено использовать адаптивное определение показателя степени в классе степенных функций нелинейного преобразования локальных контрастов изображения. Однако и в этом случае эффективность метода недостаточна. Для ее увеличения предлагается дополнительно оценивать локальные окрестности изображения с учетом среднеквадратических отклонений относительно яркости центрального элемента и на том основании формировать функцию нелинейного преобразования локальных контрастов яркостей элементов изображения. Определим величину показателя степени так:
где - нормирующий коэффициент, , - среднеарифметическое значение яркости исходного изображения
, - размеры изображения ( , ), - среднеквадратическое отклонение значений яркостей элементов изображения в скользящей окрестности , которое определяется выражением
Отметим, что при программной реализации предложенного метода учитывают случай, когда , задавая некоторое предельное минимальное значение . То есть текущему среднеквадратическому отклонению значений яркостей элементов изображения присваивают в том случае, когда . Для выражения (8) характерным является то, что когда элементы изображения, которые попадают в скользящую окрестность , мало отличаются по значению от центрального элемента окрестности , то это приводит к малым значениям среднеквадратического отклонения . В результате получаем значительное уменьшение коэффициента от в выражении (6), что адекватно увеличению усиления контраста. Если же элементы изображения в скользящей окрестности значительно отличаются от центрального элемента окрестности , то это приводит к большим значениям среднеквадратического отклонения . Поэтому значение степени будет тем меньше отличаться от , чем больше и, соответственно, контраст будет усиливаться меньше. Следует отметить, что параметр должен удовлетворять условию . Отметим также, что значение нормирующего коэффициента нужно выбирать исходя из анализа значений , придерживаясь того, что . Выбор значения существенно влияет на эффективность метода. Использование же глобального среднеарифметического значения яркости позволяет адаптировать обобщенный алгоритм преобразования к конкретному изображению, поскольку значение отображает уровень адаптации за яркостью зрительной системы человека при восприятии изображения. Следовательно, употребляя среднеквадратическое отклонение в качестве количественной оценки гладкости изображения в скользящей окрестности , получаем непосредственную зависимость степени от . Это позволяет в целом реализовать адаптивное усиление локальных контрастов при их степенных преобразованиях. Нелинейное растяжение локальных контрастов Усиление контраста - одна из важных задач обработки изображений, распознавания образов и машинного зрения. Решение этой задачи непосредственно связано с повышением вероятности правильного восприятия изображения. В последнее время разработаны методы улучшения изображений, которые базируются на нелинейных преобразованиях локальных контрастов с учетом особенностей человеческого зрения. Реализация этих методов состоит в выполнении трех основных шагов: Шаг 1. Определение количественной меры локального контраста. Шаг 2. Увеличение по определенному закону некоторой количественной меры локального контраста. Шаг 3. Восстановление элемента преобразованного изображения с усиленным локальным контрастом. Такие преобразования выполняются для каждого элемента изображения. Предлагается новый подход к повышению контраста изображения, который базируется на преобразовании гистограммы локальных контрастов. Рассмотрев гистограммы распределения значений локальных контрастов реальных изображений отметим, что в большинстве случаев они имеют небольшие значения и занимают примерно треть допустимого диапазона (рис. 1). Следовательно, реальные изображения характеризуются, в основном, небольшими значениями локальных контрастов. Гистограмма распределения значений локальных контрастов изображения, которое было обработано некоторым методом усиление контраста, будет иметь вид, представленный на рис. 2. Анализируя гистограммы распределения значений локальных контрастов исходного и обработанного изображений, можно предположить, что гистограмма на рис. 2 получена вследствие нелинейного растяжения гистограммы на рис. 1. Рис. 1. Типичная гистограмма распределения значений локальных контрастов исходного изображения. Рис. 2. Гистограмма распределения значений локальных контрастов изображения, обработанного некоторым методом повышения контрастности. Рассмотрим метод повышения контрастности изображений с использованием предложенного подхода. Основные этапы реализации данного метода будут аналогичны к вышеупомянутой трехэтапной схеме [2], за исключением этапа нелинейного преобразования локальных контрастов, который рассмотрим более детально. Для нелинейного преобразования локального контраста используем следующее выражение:
где - значение локального контраста элемента исходного изображения с координатами , - усиленное значение локального контраста элемента изображения с координатами ; - максимально возможное значение локального контраста ; , - максимальное и минимальное значения локального контраста исходного изображения, - оценка математического ожидания значений локального контраста (например, среднеарифметическое значение локальных контрастов элементов изображения), , - коэффициенты постоянного смещения; - показатель степени . Проанализируем функцию преобразования локального контраста (9). Для этого рассмотрим графики двух функций - степенного преобразования и предложенной функции (9), которые представленные на рис. 3. Функция степенного преобразования локального контраста вычисляется за выражением типа , где . Рис. 3. Графики функций преобразования локального контраста (1 - степенная функция, 2 - за выражением (9)). Из рис. 3 видно, что предложенная функция обеспечивает лучшее усиление для небольших значений локального контраста. Значения локальных контрастов для реальных изображений имеют как раз такой уровень. Тем не менее при практической реализации используют частный случай выражения (9). Он состоит в проведении преобразований лишь для таких локальных контрастов, которые удовлетворяют условию . В целом предложенный метод позволяет проводить эффективное усиление контрастности изображений. %Программа, реализующая метод повышения контрастности изображений %с использованием энтропии clear; %=====Считывание исходных данных===== L=imread('image1.tif'); [N M]=size(L); m=15;n=15;n1=fix(n/2);m1=fix(m/2); %=====Преобразование матрицы элементов изображения для избежания краевого эффекта===== a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M); for i=1:n1; for j=1:m1; L1(i,j)=a; L3(i,j)=b; L6(i,j)=c; L8(i,j)=d; end;end; L2=L(1,1:M); L02=L2; for i=1:n1-1; L2=[L2;L02]; end; L7=L(N,1:M); L07=L7; for i=1:n1-1; L7=[L7;L07]; end; L4=L(1:N,1); L4=L4'; L04=L4; for i=1:m1-1; L4=[L4;L04]; end; L4=L4'; L5=L(1:N,M); L5=L5'; L05=L5; for i=1:m1-1; L5=[L5;L05]; end; L5=L5'; L1=[L1;L4]; L1=[L1;L6]; L1=L1'; L2=[L2;L]; L2=[L2;L7]; L2=L2'; L3=[L3;L5]; L3=[L3;L8]; L3=L3'; L1=[L1;L2]; L1=[L1;L3]; Lr=L1'; clear L2;clear L3;clear L4;clear L5;clear L6;clear L7;clear L8;clear L02; clear L04;clear L05;clear L07;clear L1;clear L; %=====Определение параметров локальной окрестности===== Entropia=ones(N+2*n1,M+2*m1); for i=1+n1:N+n1; disp(i) for j=1+n1:M+m1; if j==1+m1; D=0; for a=-n1:n1; for b=-m1:m1; D(n1+1+a,m1+1+b)=Lr(i+a,j+b); end; end; end; if j>1+m1; for a=-n1:n1; D(n1+1+a,m+1)=Lr(i+a,j+m1); end; D=D(1:n,2:m+1); end; Pk_vektor=hist(D(:),max(max(D))-min(min(D))+1)/(n*m); for ind=1:length(Pk_vektor); if Pk_vektor(ind)==0; Pk_vektor(ind)=1; end; end; Entropia(i,j)=-sum(Pk_vektor.*log(Pk_vektor)); end; end; n_filter=3;m_filter=n_filter;F=ones(n_filter,m_filter); Lser=filter2(F,Lr,'same')/(n_filter*m_filter); clear n_filter;clear m_filter;clear F; amax=.7;amin=.5; %=====Определение локальных контрастов и функции их преобразования===== C=abs(Lr-Lser)./(Lr+Lser+eps); alfa=amin+.2.*(1-exp(-((Entropia./max(max(Entropia))-.5).^2) ./(2*.14^2))).^3; C=C.^alfa; for i=1+n1:N+n1; for j=1+n1:M+m1; if Lr(i,j)>=Lser(i,j); Lvyh(i,j)=Lser(i,j)*(1+C(i,j))/(1-C(i,j)+eps); else Lvyh(i,j)=Lser(i,j)*(1-C(i,j))/(1+C(i,j)); end; %=====Проверка корректности диапазона===== if Lvyh(i,j)>=255; Lvyh(i,j)=255; end; if Lvyh(i,j)<=0; Lvyh(i,j)=0; end; end; end; Lvyh=Lvyh(n1+1:N+n1,m1+1:M+m1); Lvyh=round(Lvyh); L=Lr(n1+1:N+n1,m1+1:M+m1); %=====Визуализация результатов обработки===== colormap(gray(255)); subplot(221);image(L');axis('image'); subplot(222);image(Lvyh');axis('image'); Результаты работы программы представлены на рис.
Рис. Локально-адаптивный метод повышения визуального качества изображений с использованием энтропии: а) исходное изображение; б) изображение а, обработанное известным методом с использованием энтропии; в) изображение а, обработанное известным методом с использованием классического подхода к определению энтропии; г) изображение а, обработанное предложенным методом. %Программа, реализующая метод контрастирования изображений с использованием %среднеквадратических отклонений значений яркостей элементов локальной окрестности. clear; %=====Считывание исходных данных===== L=imread('image2.tif'); [N M]=size(L); m=15;n=15;n1=fix(n/2);m1=fix(m/2); %=====Преобразование матрицы элементов изображения для избежания краевого эффекта===== a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M); for i=1:n1; for j=1:m1; L1(i,j)=a; L3(i,j)=b; L6(i,j)=c; L8(i,j)=d; end;end; L2=L(1,1:M); L02=L2; for i=1:n1-1; L2=[L2;L02]; end; L7=L(N,1:M); L07=L7; for i=1:n1-1; L7=[L7;L07]; end; L4=L(1:N,1); L4=L4'; L04=L4; for i=1:m1-1; L4=[L4;L04]; end; L4=L4'; L5=L(1:N,M); L5=L5'; L05=L5; for i=1:m1-1; L5=[L5;L05]; end; L5=L5'; L1=[L1;L4]; L1=[L1;L6]; L1=L1'; L2=[L2;L]; L2=[L2;L7]; L2=L2'; L3=[L3;L5]; L3=[L3;L8]; L3=L3'; L1=[L1;L2]; L1=[L1;L3]; Lr=L1'; clear L2;clear L3;clear L4;clear L5;clear L6;clear L7;clear L8; clear L02;clear L04;clear L05;clear L07;clear L1;clear L; %====Определение среднеквадратических отклонений значений яркостей элементов локальной окрестности==== SV=zeros(N+2*n1,M+2*m1); for i=1+n1:N+n1; for j=1+m1:M+m1; if j==1+m1; D=0; for a=-n1:n1; for b=-m1:m1; D(n1+1+a,m1+1+b)=Lr(i+a,j+b); end; end; end; if j>1+m1; for a=-n1:n1; D(n1+1+a,m+1)=Lr(i+a,j+m1); end; D=D(1:n,2:m+1); end; D=D(:); SV(i,j)=std(D); end; end; %=====Определение массива усредненных значений элементов изображения===== n_filter=3;m_filter=n_filter; F=ones(n_filter,m_filter); Lser=filter2(F,Lr,'same')/(n_filter*m_filter); amin=.35;amax=.95; C=(Lr-Lser)./(Lr+Lser+eps); C=abs(C); for i=1+n1:N+n1; disp(i) for j=1+m1:M+m1; if SV(i,j)<=1; SV(i,j)=1; end; if j==1+m1; TM=0; for a=-n1:n1; for b=-m1:m1; TM(n1+1+a,m1+1+b)=SV(i+a,j+b); end; end; end; if j>1+m1; for a=-n1:n1; TM(n1+1+a,m+1)=SV(i+a,j+m1); end; TM=TM(1:n,2:m+1); end; SV_MIN=min(min(TM)); SV_MAX=max(max(TM)); C(i,j)=C(i,j)^(amin+(amax-amin)*(SV(i,j)-SV_MIN)/(SV_MAX-SV_MIN)); if Lroshyrena(i,j)>=Lser(i,j); Lvyh(i,j)=Lser(i,j)*(1+C(i,j))/(1-C(i,j)); else Lvyh(i,j)=Lser(i,j)*(1-C(i,j))/(1+C(i,j)); end; %=====Проверка корректности диапазона===== if Lvyh(i,j)>=255; Lvyh(i,j)=255; end; if Lvyh(i,j)<=0; Lvyh(i,j)=0; end; end; end; Lvyh=Lvyh(n1+1:N+n1,m1+1:M+m1); Lvyh=round(Lvyh); L=Lroshyrena(n1+1:N+n1,m1+1:M+m1); %=====Визуализация результатов===== colormap(gray(255)); subplot(221);image(L);axis('image'); subplot(222);image(Lvyh);axis('image'); Результаты работы программы представлены на рис.
Рис. Локально-адаптивний метод улучшения визуального качества изображений с использованием среднеквадратических отклонений значений яркостей элементов локальной окрестности: а) исходное изображение; б) изображение а, обработанное известным методом; в) изображение а, обработанное предложенным методом. %Программа, реализующая метод нелинейного (степенного) преобразования (растяжения) %локальных контрастов (глобальная реализация) clear; %=====Считывание исходных данных===== L=imread('im.tif'); [N M]=size(L); %=====Задание параметров локальных окрестностей===== m=5;n=m;n1=fix(n/2);m1=fix(m/2); R=255; %=====Преобразование матрицы интенсивностей с целью избежания краевого эффекта===== a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M); for i=1:n1; for j=1:m1; L1(i,j)=a; L3(i,j)=b; L6(i,j)=c; L8(i,j)=d; end; end; L2=L(1,1:M); L02=L2; for i=1:n1-1; L2=[L2;L02]; end; L7=L(N,1:M); L07=L7; for i=1:n1-1; L7=[L7;L07]; end; L4=L(1:N,1); L4=L4'; L04=L4; for i=1:m1-1; L4=[L4;L04]; end; L4=L4'; L5=L(1:N,M); L5=L5'; L05=L5; for i=1:m1-1; L5=[L5;L05]; end; L5=L5'; L1=[L1;L4]; L1=[L1;L6]; L1=L1'; L2=[L2;L]; L2=[L2;L7]; L2=L2'; L3=[L3;L5]; L3=[L3;L8]; L3=L3'; L1=[L1;L2]; L1=[L1;L3]; Lr=L1'; clear L2;clear L3;clear L4;clear L5;clear L6; clear L7;clear L8;clear L02;clear L04; clear L05;clear L07;clear L1;clear L; %=====Определение усредненного локального среднего изображения===== F=ones(n,m); Lser=filter2(F,Lr,'same')/(n*m); С=abs(Lr-Lser)/(Lr+Lser); CMIN=min(min(C)); CMAX=max(max(C)); alfa=.9; %=====Параметр нелинейного преобразования===== %=====Нелинейное (при a>1 или a<1) растяжение локальных контрастов===== C=((C-CMIN)./(CMAX-CMIN)).^alfa; %=====Восстановление яркостей результирующего изображения===== for i=1+n1:N+n1; disp(i) for j=1+m1:M+m1; if Lr(i,j)>=Lser(i,j); Lvyh(i,j)=Lser(i,j)*(1+C(i,j))/(1-C(i,j)); else Lvyh(i,j)=Lser(i,j)*(1-C(i,j))/(1+C(i,j)); end; if Lvyh(i,j)>=R; Lvyh(i,j)=R; end; if Lvyh(i,j)<=0; Lvyh(i,j)=0; end; end; end; Lvyh=Lvyh(n1+1:N+n1,m1+1:M+m1); Lvyh=round(Lvyh); L=Lroshyrena(n1+1:N+n1,m1+1:M+m1); %=====Визуализация результатов===== subplot(221);imshow(L');axis('image'); subplot(222);imshow(Lvyh');axis('image');
Рис. Обработка изображений методом нелинейного растяжения локальных контрастов. Как было сказано выше этот метод может быть реализован в скользящем варианте, в котором преобразование локальных контрастов выполняется с учетом характеристик локальных окрестностей. %Программа, реализующая метод нелинейного (степенного) преобразования (растяжения) %локальных контрастов (скользящая реализация) clear; %=====Считывание исходных данных===== L=imread('im1.bmp'); L=L(:,:,1); L=double(L)./255; [N M]=size(L); %=====Задание параметров локальных окрестностей===== m=17;n=m;n1=fix(n/2);m1=fix(m/2); R=255/255; %=====Преобразование матрицы интенсивностей с целью избежания краевого эффекта===== a=L(1,1);b=L(1,M);c=L(N,1);d=L(N,M); for i=1:n1; for j=1:m1; L1(i,j)=a; L3(i,j)=b; L6(i,j)=c; L8(i,j)=d; end; end; L2=L(1,1:M); L02=L2; for i=1:n1-1; L2=[L2;L02]; end; L7=L(N,1:M); L07=L7; for i=1:n1-1; L7=[L7;L07]; end; L4=L(1:N,1); L4=L4'; L04=L4; for i=1:m1-1; L4=[L4;L04]; end; L4=L4'; L5=L(1:N,M); L5=L5'; L05=L5; for i=1:m1-1; L5=[L5;L05]; end; L5=L5'; L1=[L1;L4]; L1=[L1;L6]; L1=L1'; L2=[L2;L]; L2=[L2;L7]; L2=L2'; L3=[L3;L5]; L3=[L3;L8]; L3=L3'; L1=[L1;L2]; L1=[L1;L3]; Lr=L1'; clear L2;clear L3;clear L4;clear L5;clear L6; clear L7;clear L8;clear L02;clear L04; clear L05;clear L07;clear L1;clear L; alfa=5; %=====Параметр нелинейного преобразования===== %=====Восстановление яркостей результирующего изображения===== C=zeros(N+n+1,M+m+1); C1=zeros(N+n+1,M+m+1); for i=1+n1:N+n1; disp(i) for j=1+m1:M+m1; if j==1+m1; D=0; for a=-n1:n1; for b=-m1:m1; D(n1+1+a,m1+1+b)=Lr(i+a,j+b); end; end; end; if j>(1+m1); for a=-n1:n1; D(n1+1+a,m+1)=Lr(i+a,j+m1); end; D=D(1:n,2:m+1); end; Lser(i,j)=sum(sum(D))/(n*m); C(i,j)=abs((Lr(i,j)-Lser(i,j))/(Lr(i,j)+Lser(i,j))); end; end; for i=1+n1:N+n1; disp(i) for j=1+m1:M+m1; if j==1+m1; D=0; for a=-n1:n1; for b=-m1:m1; D(n1+1+a,m1+1+b)=C(i+a,j+b); end; end; end; if j>(1+m1); for a=-n1:n1; D(n1+1+a,m+1)=C(i+a,j+m1); end; D=D(1:n,2:m+1); end; CMIN(i,j)=min(min(D)); CMAX(i,j)=max(max(D)); C1(i,j)=((C(i,j)-CMIN(i,j))/(CMAX(i,j)-CMIN(i,j)))^alfa; if C1(i,j)>1; C1(i,j)=1; end; if C1(i,j)<0; C1(i,j)=0; end; if Lr(i,j)>=Lser(i,j); Lvyh(i,j)=Lser(i,j)*(1+C1(i,j))/(1-C1(i,j)+eps); else Lvyh(i,j)=Lser(i,j)*(1-C1(i,j))/(1+C1(i,j)); end; if Lvyh(i,j)>R; Lvyh(i,j)=R; end; if Lvyh(i,j)<0; Lvyh(i,j)=0; end; end; end; Lvyh=Lvyh(n1+1:N+n1,m1+1:M+m1); L=Lr(n1+1:N+n1,m1+1:M+m1); %=====Визуализация результатов===== subplot(221);imshow(L');axis('image'); subplot(222);imshow(Lvyh');axis('image'); Литература.
В оглавление книги \ К предыдущему разделу \ К следующему разделу |
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: | ||
Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |