分段线性变换与直方图修正

本文主要包括以下内容

  • 分段线性变换
  • 两种实用的直方图修正技术:直方图均衡化和直方图规定化
  • 本章的典型案例分析
    • 基于直方图均衡化的图像灰度归一化
    • 直方图匹配

分段线性变换

分段线性变换有很多种, 包括灰度拉伸、 灰度窗口变换等, 本节仅讲述最为常用的灰度拉伸.

利用分段线性变换函数来增强图像对比度的方法实际是增强原图各部分的反差,即增强输入图像中感兴趣的灰度区域,相对抑制那些不感兴趣的灰度区域。分段线性函数的主要优势在于它的形式可任意合成,而其缺点是需要更多的用户输入.

分段的灰度拉伸可以更加灵活地控制输出灰度直方图的分布,可以有选择的拉伸某段灰
度区间以改善输出图像。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,我们可以用
灰度拉伸功能来扩展(斜率>1)物体灰度区间以改善图像:同样,如果图像灰度集中在较亮
的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩〈斜率<1)物体灰度区间以改善图像
质量。

灰度拉伸是通过控制输出图像中灰度级的展开程度来达到控制对比度的效果。一般情况
下都限制x1<x2,y1<y2,从而保证函数单调递增,以避免造成处理过的图像中灰度级发生颠倒.

matlab实现

function out = imgrayscaling(varargin)
% IMGRAYSCALING     执行灰度拉伸功能
%   语法:
%       out = imgrayscaling(I, [x1,x2], [y1,y2]);
%       out = imgrayscaling(X, map, [x1,x2], [y1,y2]);
%       out = imgrayscaling(RGB, [x1,x2], [y1,y2]);
%   这个函数提供灰度拉伸功能,输入图像应当是灰度图像,但如果提供的不是灰度
%   图像的话,函数会自动将图像转化为灰度形式。x1,x2,y1,y2应当使用双精度
%   类型存储,图像矩阵可以使用任何MATLAB支持的类型存储。[A, map, x1 , x2, y1, y2] = parse_inputs(varargin{:});% 计算输入图像A中数据类型对应的取值范围
range = getrangefromclass(A);
range = range(2);% 如果输入图像不是灰度图,则需要执行转换
if ndims(A)==3,% A矩阵为3维,RGB图像A = rgb2gray(A);
elseif ~isempty(map),% MAP变量为非空,索引图像A = ind2gray(A,map);
end % 对灰度图像则不需要转换% 读取原始图像的大小并初始化输出图像
[M,N] = size(A);
I = im2double(A);       % 将输入图像转换为双精度类型
out = zeros(M,N);% 主体部分,双级嵌套循环和选择结构
for i=1:Mfor j=1:Nif I(i,j)<x1out(i,j) = y1 * I(i,j) / x1;elseif I(i,j)>x2out(i,j) = (I(i,j)-x2)*(range-y2)/(range-x2) + y2;elseout(i,j) = (I(i,j)-x1)*(y2-y1)/(x2-x1) + y1;endend
end% 将输出图像的格式转化为与输入图像相同
if isa(A, 'uint8') % uint8out = im2uint8(out);
elseif isa(A, 'uint16')out = im2uint16(out);
% 其它情况,输出双精度类型的图像
end% 输出:
if nargout==0 % 如果没有提供参数接受返回值imshow(out);return;
end
%-----------------------------------------------------------------------------
function [A, map, x1, x2, y1, y2] = parse_inputs(varargin);
% 这就是用来分析输入参数个数和有效性的函数parse_inputs
% A       输入图像,RGB图 (3D), 灰度图 (2D), 或者索引图 (X)
% map     索引图调色板 (:,3)
% [x1,x2] 参数组 1,曲线中两个转折点的横坐标
% [y1,y2] 参数组 2,曲线中两个转折点的纵坐标
% 首先建立一个空的map变量,以免后面调用isempty(map)时出错
map = [];%   IPTCHECKNARGIN(LOW,HIGH,NUM_INPUTS,FUNC_NAME) 检查输入参数的个数是否
%   符合要求,即NUM_INPUTS中包含的输入变量个数是否在LOW和HIGH所指定的范围
%   内。如果不在范围内,则此函数给出一个格式化的错误信息。
iptchecknargin(3,4,nargin,mfilename);%   IPTCHECKINPUT(A,CLASSES,ATTRIBUTES,FUNC_NAME,VAR_NAME, ARG_POS) 检查给定
%   矩阵A中的元素是否属于给定的类型列表。如果存在元素不属于给定的类型,则给出
%   一个格式化的错误信息。
iptcheckinput(varargin{1},...{'uint8','uint16','int16','double'}, ...{'real', 'nonsparse'},mfilename,'I, X or RGB',1);switch nargincase 3 %            可能是imgrayscaling(I, [x1,x2], [y1,y2]) 或 imgrayscaling(RGB, [x1,x2], [y1,y2])A = varargin{1};x1 = varargin{2}(1);x2 = varargin{2}(2);y1 = varargin{3}(1);y2 = varargin{3}(2);case 4A = varargin{1};%               imgrayscaling(X, map, [x1,x2], [y1,y2])map = varargin{2};x1 = varargin{2}(1);x2 = varargin{2}(2);y1 = varargin{3}(1);y2 = varargin{3}(2);
end% 检测输入参数的有效性
% 检查RGB数组
if (ndims(A)==3) && (size(A,3)~=3)   msg = sprintf('%s: 真彩色图像应当使用一个M-N-3维度的数组', ...upper(mfilename));eid = sprintf('Images:%s:trueColorRgbImageMustBeMbyNby3',mfilename);error(eid,'%s',msg);
endif ~isempty(map) 
% 检查调色板if (size(map,2) ~= 3) || ndims(map)>2msg1 = sprintf('%s: 输入的调色板应当是一个矩阵', ...upper(mfilename));msg2 = '并拥有三列';eid = sprintf('Images:%s:inColormapMustBe2Dwith3Cols',mfilename);error(eid,'%s %s',msg1,msg2);elseif (min(map(:))<0) || (max(map(:))>1)msg1 = sprintf('%s: 调色板中各个分量的强度 ',upper(mfilename));msg2 = '应当在0和1之间';eid = sprintf('Images:%s:colormapValsMustBe0to1',mfilename);error(eid,'%s %s',msg1,msg2);end
end% 将int16类型的矩阵转换成uint16类型
if isa(A,'int16')A = int16touint16(A);
end

调用

I = imread('coins.png');
J1 = imgrayscaling(I,[0.3,0.75],[0.15,0.85]);
figure,imshow(J1,[]);
J2 = imgrayscaling(I,[0.15,0.85],[0.3,0.7]);
figure,imshow(J2,[]);

从图中可以看出,第一组参数让图像灰度直方图上的非零区域扩展,而第二
组参数让图像的灰度直方图非零区域压缩, 这给目标图像带来了截然不同的效果。第一幅图
像中的细节更加清晰, 而第二幅图像更加柔和。

直方图均衡化

直方图均衡化又称灰度均衡化.是指通过某种灰度映射使输入图像转换为在每一灰度级 上都有近似相同的像素点数的输出图像(即输出的直方图是均匀的〉。在经过均衡化处理后的图像中,像素将占有尽可能多的灰度级并且分布均匀.因此,这样的图像将具有较高的对比度和较大的动态范围。

为了便于分析,首先考虑灰度范围为0~1且连续的情况。此时图像的归一化直方图即为概率密度函数(PDF):

直方图均衡化的数学原理:直方图均衡化原理及编码实现
这个推导很详细,是我看过最清楚明白的一个。

直方图均衡化的作用是图像增强
有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。
参见: 直方图均衡化原理

matlab实现

下面的程序在读入了图像pout.tif后,分别对其进行了增加对比度,减小对比度,线性增 加亮度和线性减小亮度的处理, 得到了原图像的4个灰度变化版本;接着又分别对这4副图 像进行了立方图均衡化处理并显示了它们在处理前、 后的直方图.

I = imread('pout.tif');
I = im2double(I);I1 = 2*I - 55/255;
subplot(4,4,1);
imshow(I1);
subplot(4,4,2);
imhist(I1);
subplot(4,4,3);
imshow(histeq(I1));
subplot(4,4,4);
imhist(histeq(I1));I2 = 0.5*I + 55/255;
subplot(4,4,5);
imshow(I2);
subplot(4,4,6);
imhist(I2);
subplot(4,4,7);
imshow(histeq(I2));
subplot(4,4,8);
imhist(histeq(I2));I3 = I + 55/255;
subplot(4,4,9);
imshow(I3);
subplot(4,4,10);
imhist(I3);
subplot(4,4,11);
imshow(histeq(I3));
subplot(4,4,12);
imhist(histeq(I3));I4 = I - 55/255;
subplot(4,4,13);
imshow(I4);
subplot(4,4,14);
imhist(I4);
subplot(4,4,15);
imshow(histeq(I4));
subplot(4,4,16);
imhist(histeq(I4));

直方图规定化

直方图均衡化算法可以自动确定灰度变换函数, 从而获得具有均匀直方图的输出图像。它主要用于增强动态范围偏小的图像对比度, 丰富图像的灰度级。 这种方法的优点是操作简单, 且结果可以预知, 当图像需要自动增强时是一种不错的选择。

但有时用户也希望可以对变换过程加以控制, 如能够人为地修正直方图的形状, 或者说获得具有指定直方图的输出图像..这样就可以有选择地增强某个灰度范围内的对比度或使图
像灰度值满足某种特定的分布 这种用于产生具有特定直方图图像的方法叫做直方图规定化,或直方图匹配.

直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像〈待匹配直方图的图像〉之间的关系,使原始图像的直方图匹配特定的形状,从而弥补直方图均衡不具备交互作用的特性。

直方图规定化增强处理的步骤如下:
1,其增强原理是先对原始的直方图均衡化:S = T(r)
2,同时对规定的直方图均衡化:v = G(z)
3,由于都是均衡化,故令 S = v,则:z=G1(v)=G1[T(r)]

当然,在实际计算中我们利用的是上述公式的离散形式,这样就不必去关心函数只f(r),g(z)
以及反变换函数g的具体解析形式, 而可以直接将它们作为映射表处理。其中, f(r)为输入
图像均衡化的离散灰度级映射关系, g(z)为标准图像均衡化的离散灰度级映射关系, 而g
则是标准图像均衡化的逆映射关系, 它给出了从经过均衡化处理的标准化图像到原标准图像
的离散灰度映射, 相当于均衡化处理的逆过程。

matlab实现
histeq函数不仅可以用于直方图均衡化, 也可以用于直方图规定化, 此时需要提供可选
参数hgram. 调用语法为:
[J, T]=histeq(I, hgram)

函数会将原始图像I处理成一幅以用户指定向量hgram作为直方图的图像。
参数hgram的分量数目即为直方图的收集箱数目。对于double型图像,hgram的元素取
值范围是[O, 1):对于uint8型图像为[O, 255):对于uint16型图像则为(0, 65535)。
其他参数的意义与在直方圈均衡化中的相同。

I = imread('pout.tif');
I1 = imread('coins.png');
I2 = imread('circuit.tif'); [hgram1,x]=imhist(I1);
[hgram2,x]=imhist(I2);J1 = histeq(I,hgram1);
J2 = histeq(I,hgram2);subplot(2,3,1);
imshow(I);title('原图');
subplot(2,3,2);
imshow(I1);title('标准图1');
subplot(2,3,3);
imshow(I2);title('标准图2');
subplot(2,3,5);
imshow(J1);title('规定化到1');
subplot(2,3,6);
imshow(J2);title('规定化到2');figure;subplot(2,3,1);
imhist(I);title('原图');
subplot(2,3,2);
imhist(I1);title('标准图1');
subplot(2,3,3);
imhist(I2);title('标准图2');
subplot(2,3,5);
imhist(J1);title('规定化到1');
subplot(2,3,6);
imhist(J2);title('规定化到2');

直方图规定化本质上是一种拟合过程, 因此变换得到的直方图与标准目标图像的直方图 并不会完全一致。 然而即使只是相似的拟合, 仍然使规定化的图像在亮度与对比度上具有类 似标准图像的特性, 这正是直方图规定化的目的所在.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像的几何变换

包含相同内容的两幅图像可能由于成像角度、透视关系乃至镜头自身原因所造成的几何失 真而呈现出截然不同的外观&#xff0c;这就给观测者或是图像识别程序带来了困扰。通过适当的几何变 换可以最大程度地消除这些几何失真所产生的负面影响&#xff0c;有利于我们在后续的处理…

交叉科学不仅不是边缘学科,反而应是科研主流

来源&#xff1a;科学网摘要&#xff1a;“信息时代将走过数字化、网络化、智能化等几个阶段&#xff0c;从现在分界将信息时代和智能时代划分成两个时代有点牵强。”“信息时代将走过数字化、网络化、智能化等几个阶段&#xff0c;从现在分界将信息时代和智能时代划分成两个时…

空间域图像增强

图像增强是数字图像处理相对简单却最具艺术性的领域之一&#xff0c;增强的目的是消除噪声&#xff0c; 显现那些被模糊了的细节或简单突出一幅图像中我们感兴趣的特征。一个简单例子是增强图 像的对比度&#xff0c; 使其看起来更加一目了然。增强是图像处理中非常主观的领域…

wordpress增删改查

wordpress 焦点图插件-增删改查操作 2012-02-01 15:39:14分类&#xff1a; 系统运维 该插件在wordpress-3.3.1-zh_CN版本下开发&#xff0c;主要用于在后台管理首页焦点图&#xff08;图片轮播&#xff09;。存放焦点图信息的表 focusphoto(id,photourl,linkto,title,descripti…

AI改变现代商业的25种方式

来源&#xff1a;财富编译 | Geek AI、微胖、茜茜现在&#xff0c;是时候真正了解 AI 未来。关于人工智能引起的焦虑 - 就业问题是其主要来源 - 现实是&#xff0c;没有人知道未来会如何。原因是&#xff0c;我们永远无法预见人类的聪明才智&#xff0c;以及全世界数百万企业家…

中值滤波与图像锐化

本文主要包括以下内容 中值滤波及其改进算法图像锐化&#xff0c; 包括梯度算子、拉普拉斯算子、高提升滤波和高斯-拉普拉斯变换本章的典型囊例分析 对椒盐噪声的平滑效果比较Laplacian与LoG算子的锐化效果比较 中值滤波 中值滤波本质上是一种统计排序滤波器&#xff0e; …

5G手机“狂奔而来”,业内预计明年二季度全面上市

来源&#xff1a; 全天候科技作者&#xff1a;张超&#xff0c;编辑&#xff1a;舒虹随着科技快速发展、网络不断升级&#xff0c;智能手机的“5G时代”正狂奔而来。10月25日&#xff0c;台湾电子时报援引行业消息人士称&#xff0c;芯片、手机厂商等正在加快进度&#xff0c;预…

傅立叶变换学习

空间域和频率域为我们提供了不同的视角&#xff0e; 在空域中&#xff0e; 函数的自变量&#xff08;x, y&#xff09;被视为二维空间中的一点&#xff0c; 数字图像J(x, y&#xff09;即为一个定义在二维空间中的矩形区域上的离散函数&#xff1a;换一个角度&#xff0c; 如果…

盘点互联网大厂AI战略变迁,开发者将怎样pick前进路线?

来源&#xff1a;AI科技大本营随着各大企业相继试水“全面 AI”&#xff0c;人工智能在技术落地层面也开始持续深入&#xff0c;泛人工智能时代正在逼近。越来越多的发展趋势表明&#xff0c;未来的人工智能将逐步迈入广泛普及阶段&#xff0c;继而深入影响人类日常的生产生活方…

人脸识别最全知识图谱—清华大学出品

来源&#xff1a;智东西摘要&#xff1a;全面解析人脸识别技术原理、领域人才情况、技术应用领域和发展趋势。自20世纪下半叶&#xff0c;计算机视觉技术逐渐地发展壮大。同时&#xff0c;伴随着数字图像相关的软硬件技术在人们生活中的广泛使用&#xff0c;数字图像已经成为当…

频率域波图像增强

本文主要包括以下内容 频率域图像增强高通滤波器和低通滤波器本章的典型案例分析 利用频域滤波消除周期噪声 频域滤波基础 频域滤波与空域滤波的关系 傅立叶变换可以将图像从空域变换到频域&#xff0c;而傅立叶反变换则可以将图像的频谱逆变换为空域图像&#xff0c;即人…

挑战者联盟!谁会成为最赚钱的人工智能公司

来源&#xff1a; 网易智能摘要&#xff1a;每一波重大科技浪潮都会产生为数不多的价值几百亿乃至数千亿美元的极具价值的公司&#xff0c;而当一项重大的新技术出现时&#xff0c;通常都很难预测谁将成为最大的赢家。纵观科技行业的历史&#xff0c;大多数科技浪潮的价值和收入…

彩色图像处理

彩色基础 什么是彩色 彩色是物体的一种属性&#xff0c;就像纹理、形状、重量一样&#xff0e; 通常&#xff0c; 它依赖于3个方面的因素&#xff1a; 光源一一照射光的谱性质或谱能量分布&#xff0e;物体&#xff0d;一被照射物体的反射性质&#xff0e;成像接收器&#…

IBM Watson失败的4大原因

来源&#xff1a;大数医达被称为“认知计算”革命性代表的IBM Watson从诞生那一刻起&#xff0c;就一直在被质疑中发展&#xff0c;在发展中被质疑。近日&#xff0c;坊间传言IBM Watson健康部门将裁员50%-70%&#xff0c;甚至也有传言说&#xff0c;整个健康部门将被关闭&…

[Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)

&#xff08;本文详情来源&#xff1a;android源码 http://www.eoeandroid.com/thread-296427-1-1.html 转载请注明出处&#xff01;&#xff09; [Android源码分享]飞鸽传书的Android客户端相信大部分同学都看过并且用过吧&#xff1f;我这里就小小的还原一下一个小模块&am…

谷歌智慧城市之困

来源&#xff1a;网易智能 摘要&#xff1a;谷歌母公司Alphabet旗下创新城市部门Sidewalk Labs目前在信息隐私问题上陷入了困境。他们失去了数据信托首席专家和顾问安卡瓦吉安&#xff08;Ann Cavoukian&#xff09;&#xff0c;该机构将批准和管理多伦多概念智能社区Quayside内…

形态学图像处理(二)

本文主要包括以下内容 二值形态学的经典应用&#xff0c; 细化和像素化&#xff0c; 以及凸壳灰度图像的形态学运算&#xff0c; 包括灰度腐蚀、灰度膨胀、灰度开和灰度闭本章的典型案例分析 在人脸局部图像中定位嘴的中心显微镜下图像的细菌计数利用顶帽变换&#xff08;to…

最全的大数据解决方案(多图)

来源&#xff1a;网络大数据未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&…

图像分割

图像分割是指将图像中具有特殊意义的不同区域划分开来&#xff0c; 这些区域互不相交&#xff0c;每个区域满足灰度、纹理、彩色等特征的某种相似性准则。图像分割是图像分析过程中最重要的步骤之一&#xff0c;分割出的区域可以作为后续特征提取的目标对象。 本文主要包括以下…

重磅:IBM 340亿美元收购红帽软件,开源生态或将迎来重大变化

来源&#xff1a;人工智能和大数据北京时间10月29日上午消息&#xff0c;据报道&#xff0c;IBM周日宣布&#xff0c;将以约340亿美元价格收购开源软件和技术主要供应商红帽公司&#xff08;Red Hat&#xff09;。根据两家公司的联合声明&#xff0c;IBM将支付现金&#xff0c;…