图像增强--图像对比度、线性展宽、灰级窗、线性动态范围调整、直方图均衡化
2016-11-30 17:47
477 查看
图像对比度:
%% 对比度线性展宽
%图像关注区域的像素范围[fa,fb]由beld扩展到[ga,gb],
% [0,fa]由alf控制
% [fb,255]由gamma
% alf<1,gamma<1,beld>1
% fb-fa
%% 计算图像对比度——4近邻 % @matrix -- 输入的图像为灰度图 % 处理方式:构造一个一维差数[1,max+1],组沿着矩阵row轴,当前像素值与右一个像素做差取绝对值 % 将其累加1在一维差数组对应位置上,到row-1。沿col轴同理。 % 对一维数组除以总共差个数,得到灰度差分布概率数组,再用公式求解:∑(m^2*temp[m]) %该方法是对一张图像对比度的求解 function C=m_contrast4(matrix) [row,col] = size(matrix); num = max(max(matrix));%矩阵中最大值 temp = zeros(1,double(num)+1); %一维像素间的灰度差数组 for i = 1:row %沿col for j = 1:col-1 num_y = abs(matrix(i,j)-matrix(i,j+1)); temp(1,num_y+1) = temp(1,num_y+1)+1; end end for i = 1:row-1 %沿row for j = 1:col num_x = abs(matrix(i,j)-matrix(i+1,j)); temp(1,num_x+1) = temp(1,num_x+1)+1; end end temp_cop = temp/sum(temp); %灰度差分布概率数组 C=0; for m = 1:num C = C + (m^2)*temp_cop(1,m+1); end
%% 计算图像对比度——8近邻 % @matrix -- 输入的图像为灰度图 %处理方式:中心像素灰度值与周围8近邻像素灰度值之差的平方之和,除以以上之差的个数。 %{ %介绍函数 padarray 功能:填充图像或填充数组。 用法:B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像 padsize->给出了给出了填充的行数和列数,通常用[r c]来表示。 padval->表示填充方法。它的具体值和描述如下: 'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展; 'replicate'表示图像大小通过复制外边界中的值来扩展; 'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。 direction->表示填充的方向。它的具体值和描述如下: 'pre'表示在每一维的第一个元素前填充; 'post'表示在每一维的最后一个元素后填充; 'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。 若参量中不包括direction,则默认值为'both'。 若参量中不包含padval,则默认用零来填充。 若参量中不包括任何参数,则默认填充为零且方向为'both'。在计算结束时,图像会被修剪成原始大小。 %} function C = m_contrast8(matrix) %matrix为输入图像 [row, col] = size(matrix); %求原始图像的行数和列数 %对原始图像进行扩展,比如50*50的图像,扩展后变成52*52的图像 matrix_cop = padarray(matrix,[1 1],'symmetric','both'); %扩展只是对原始图像的周边像素进行复制的方法进行 [row_cop,col_cop] = size(matrix_cop);%求扩展后图像的行数r和列数 %C = double(matrix_cop); %把扩展后图像转变成双精度浮点数 k=0; %定义一数值k,初始值为0 for i=2:row_cop-1 for j=2:col_cop-1 k = k+(matrix_cop(i-1,j-1)-matrix_cop(i,j))^2+(matrix_cop(i-1,j)-matrix_cop(i,j))^2+(matrix_cop(i-1,j+1)-matrix_cop(i,j))^2+... (matrix_cop(i,j+1)-matrix_cop(i,j))^2+(matrix_cop(i+1,j+1)-matrix_cop(i,j))^2+(matrix_cop(i+1,j)-matrix_cop(i,j))^2+... (matrix_cop(i+1,j-1)-matrix_cop(i,j))^2+(matrix_cop(i,j-1)-matrix_cop(i,j))^2; end end C =double( k/(8*(row-2)*(col-2)+6*(2*(row-2)+2*(col-2))+4*3));%求原始图像对比度
%% 对比度线性展宽
%图像关注区域的像素范围[fa,fb]由beld扩展到[ga,gb],
% [0,fa]由alf控制
% [fb,255]由gamma
% alf<1,gamma<1,beld>1
% fb-fa
%% 灰级窗 % @matrix -- 输入的图像为灰度图 % 原理:只对[fa,fb]映射到[0,255] function G = m_GrayWindow(matrix,fa,fb) [row,col] = size(matrix); beld = 255/(fb-fa);%对图像素 G = zeros(row,col); %G = matrix; for i=1:row for j=1:col if (matrix(i,j)>=fa) && (matrix(i,j)<fb) G(i,j) = beld*(matrix(i,j)-fa); end end end
%% 灰级窗切片 % @matrix -- 输入的图像为灰度图 % 原理:像素在[fa,fb]范围值赋为255 function G = m_GrayWindowSection(matrix,fa,fb) [row,col] = size(matrix); G =zeros(row,col); for i =1:row for j=1:col if (matrix(i,j)>=fa && matrix(i,j)<fb) G(i,j) = 255; %对图像处理 end end end
%% 线性动态范围调整 % 图像中 像素在[fa,fb]范围映射到[0,255],小于fa的赋0,大于fbd的赋255 function G = m_LinearAdjust(matrix,fa,fb) [row,col] = size(matrix); beld = 255/(fb-fa);%对图像素处理 G = zeros(row,col); %G = matrix; for i=1:row for j=1:col if (matrix(i,j)>=fa) && (matrix(i,j)<fb) G(i,j) = round(beld*(matrix(i,j)-fa)); end if matrix(i,j)>=fb G(i,j) = 255; end end end
%% 线性动态范围调整 % @matrix -- 输入的图像为灰度图 % 图像中对像素用对数运算进行平滑处理: function G = m_ULinearAdjust(matrix) [row,col] = size(matrix); %matrix = im2double(matrix); c = 255/log(255+1);%对图像素处理 G = zeros(row,col); %G = matrix; for i=1:row for j=1:col G(i,j) = round(c*log(1+double(matrix(i,j)))); end end
%% 直方图均衡化 % @image-输入的图像为灰度图 % 1.求image的灰度直方图向量H % 2.由H/row*col 得到灰度分布概率Pi,及计算累计分布概率Pa % 3.求得255*Pa后,从原图image像素映射到Gi像素 % @Gi-输出处理后图像 function Gi = m_HistogramEqualiza(image) [row,col] = size(image); num = max(max(image)); %矩阵中最大值 H = zeros(1,double(num)+1); %灰度直方图向量 PI = zeros(1,double(num)+1); %灰度分布概率 Pa = zeros(1,double(num)+1); %累计分布概率 Gi = zeros(row,col); format rat %分数形式 for i=1:row for j=1:col H(double(image(i,j))+1) = H(double(image(i,j))+1)+1; end end PI = H/(row*col); Pai = 0; for m=2:double(num)+1 Pai = Pai+PI(m); Pa(m) = Pai+PI(1); end Pa = round(double(num)*Pa); for i=1:row for j=1:col Gi(i,j) = Pa(image(i,j)+1); end end imhist(image);title('输入图像的灰度直方图'); figure; imhist(uint8(Gi)); title('直方图均衡化后图像的灰度直方图');
相关文章推荐
- 图像增强对比度的方法——直方图均衡化
- 灰度图像的对比度动态范围压缩
- 图像增强—限制对比度自适应直方图均衡化
- OpenCV图像增强——通过扩展灰度范围来增加对比度
- 数字图像处理:2.线性对比度展宽
- C++图像处理 -- 线性亮度/对比度调整
- 四、线性混合、调整图像的亮度与对比度
- Delphi图像处理 -- 线性亮度/对比度调整
- 【计算机视觉】【图像处理】对比度增强方法:伽马变换、全局直方图均衡化、限制对比度的自适应直方图均衡化
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
- matlab实现线性对比度展宽
- 图像指数、对数增强、直方图均衡化
- 图像增强(直方图均衡化、拉普拉斯、Log、Gamma)
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整
- 图像编辑之对比度调整(亮度对比度的算法公式)
- 使用局部标准差实现图像的局部对比度增强算法。
- OpenCV 图像处理(直方图均衡化、拉普拉斯算子图像增强、Gamma校正)
- Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
- (待补充)图像预处理——对比度归一化 & 数据增强
- 【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整