赞
踩
自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图,然后重新分布亮度来改变图像对比度。因此,该算法更适合于改进图像的局部对比度以及获得更多的图像细节。
移动模板W在图像A上逐行移动,并且模板W的中心c(x0,y0)对应图像上的点f(x0,y0);计算模板W区域的直方图均衡化变化关系:g(x,y)= T(f(x,y),计算模板中心点c(x0,y0)的均衡化对应像素值:g(x0,y0) = T(f(x0,y0))。用g(x0,y0)替代f(x0,y0);逐行计算得到整幅图像的自适应直方图均衡化图像。
我的理解:就是在一个给定框内做直方图均衡化,而框内所有处理(包括均衡化)只为了这个将原始中心点像素a变化到新的像素点b。
- function [ output_img ] = my_AHE( input_img, w)
- %UNTITLED Summary of this function goes here
- % Detailed explanation goes here
- % 自适应直方图均衡化
- % 输入:input_img:待处理图像
- % w: 局部处理的窗口大小
-
- [height,width,channels]=size(input_img);
-
- if channels==1
- src = inpit_img;
- else
- src = rgb2gray(input_img);
- end
-
- %1.图像边界扩展
- padsize=[(w-1)/2,(w-1)/2];
- padSrc = padarray(src,padsize,'symmetric','both');
-
- %2.循环求解每个区域对应的值
- output_img = zeros(height,width);
- iter = 0;
- for i=1:height
- for j=1:width
- slideWindow = zeros(w,w);
- slideWindow = padSrc(i:i+w-1,j:j+w-1);
- AHE_piexl = my_AHE_piexl(slideWindow,src(i,j));
- output_img(i,j) = AHE_piexl;
- iter = iter+1;
- disp(iter);
- end
- end
-
- output_img = uint8(output_img);
-
-
- end
-
- function [ outPiexl ] = my_AHE_piexl( window,inPiexl )
- %UNTITLED2 Summary of this function goes here
- % Detailed explanation goes here
- % 计算局部图像的直方图均衡化的像素对应值
- % 输入:window: 局部图像
- % inPiexl:输入像素
- % outPiexl:输出像素
-
- [height,width]=size(window);
-
- %1.像素灰度统计
- NumPixel = zeros(1,256);
- for i=1:height
- for j=1:width
- grayValue = window(i,j);
- NumPixel(1,grayValue+1) = NumPixel(1,grayValue+1)+1;
- end
- end
-
- %2.计算灰度分布密度
- ProbPixel = zeros(1,256);
- for k=1:256
- ProbPixel(1,k)=NumPixel(1,k)/(height*width*1.0);
- end
-
- %3.计算累积分布密度
- CumuPixel = zeros(1,256);
- CumuPixel(1,1) = ProbPixel(1,1);
- for l=2:256
- CumuPixel(1,l) = CumuPixel(1,l-1)+ProbPixel(1,l);
- end
- CumuPixel = uint8(255 .* CumuPixel + 0.5); %取整数
-
- %4.计算灰度值映射
- outPiexl = CumuPixel(inPiexl);
-
- end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。