主要内容

不匹配

调整二维图像的直方图以匹配参考图像的直方图

描述

例子

J=不匹配(,裁判)变换二维灰度或真彩色图像返回输出图像J谁的直方图与参考图像的直方图近似匹配裁判

  • 如果两者都有裁判那么,是真彩色图像吗不匹配匹配每个颜色通道独立到相应的颜色通道裁判

  • 如果是真彩RGB图像和裁判是灰度图像吗不匹配匹配每个频道的针对从裁判

  • 如果是灰度图像吗裁判也必须是灰度图像。

图像裁判可以是任何允许的数据类型,大小不必相等。

例子

J=不匹配(,裁判,nbins)用途nbins对于给定的图像数据类型,在适当范围内等距的容器。返回的图片J只有nbins离散的水平。

  • 如果图像的数据类型是,则直方图范围为[0,1]。

  • 如果图像的数据类型为uint8,则直方图范围为[0,255]。

  • 如果图像的数据类型为uint16,则直方图范围为[0,65535]。

  • 如果图像的数据类型为int16,则直方图范围为[-32768,32767]。

例子

J=不匹配(___,名称、值)使用名称-值对更改直方图匹配算法的行为。

例子

[J,hgram) = imhistmatch (___)返回参考图像的直方图裁判用于匹配hgramhgram这是一张一乘的票-nbins(何时)裁判是灰度)还是3 × -nbins(何时)裁判是truecolor)矩阵,其中nbins是直方图垃圾箱的数量。每一行hgram存储单个颜色通道的直方图裁判

例子

全部折叠

这些在不同时间拍摄的航空图像表示马萨诸塞州康科德相同地形的重叠视图A.裁判可以具有不同的大小和图像类型。

加载一个RGB图像和一个参考灰度图像。

一个= imread ('concordaerial.png');ref = imread(“concordorthophoto.png”);

获得尺寸A.

尺寸(a)
ans=1×32036 3060 3

获得尺寸裁判

尺寸(参考)
ans=1×22215 2956

请注意形象A.裁判大小和类型不同。图像A.是一个TrueColor RGB图像,而图像裁判为灰度图像。两个图像都是数据类型的uint8

生成匹配输出图像的直方图。示例匹配的每个通道A.的单直方图裁判.输出图像B呈现出图像的特征A.- 它是一个RGB图像,其大小和数据类型与图像相同A..每个RGB图像中存在的不同级别的数量B与从灰度图像构建的直方图中的箱数相同裁判.在本例中,的直方图裁判B具有默认的存储箱数量64。

B = imhistmatch (Ref);

RGB图像显示A.,参考图像裁判,直方图匹配RGB图像B.图像在显示前被调整大小。

imshow (A)标题(“彩色投射的RGB图像”)

图中包含一个坐标轴。标题为RGB Image with Color Cast的轴包含一个Image类型的对象。

imshow (Ref)标题(“参考灰度图像”)

图中包含一个坐标轴。标题为Reference Grayscale Image的轴包含一个Image类型的对象。

imshow(B)标题('直方图匹配RGB图像')

图中包含一个轴。标题直方图匹配RGB图像的轴包含图像类型的对象。

读取彩色图像和参考图像。要演示多项式方法,请将参考图像指定为两个图像中较暗的图像。

我= imread (“office_4.jpg”);ref=imread('Office_2.jpg');蒙太奇({i,ref})标题(“输入图像(左)vs参考图像(右)”);

图中包含一个轴。带有标题输入图像(左)和参考图像(右)的轴包含一个图像类型的对象。

使用多项式方法调整图像的强度使其与参考图像的直方图相匹配裁判.为了比较,还可以调整图像的强度使用统一的方法。

J = imhistmatch (ref,我“方法”,多项式的);K = imhistmatch (ref,我“方法”,“统一”);蒙太奇({J,K})标题(“使用多项式方法的直方图匹配图像(左)vs统一方法(右)”);

图中包含一个坐标轴。具有标题直方图匹配图像的轴使用多项式方法(左)VS统一方法(右)包含类型图像的对象。

采用统一方法的直方图匹配图像在天空和道路中引入了假颜色。使用多项式方法的直方图匹配图像没有这种伪影。

这个示例展示了如何改变目标直方图中的容器数量以改进直方图均衡化。

加载两个数据类型的图像uint8进入工作区。这些图像是用数码相机拍摄的,代表了同一场景的两次不同曝光。A.是曝光不足的图像,看起来很暗。裁判是具有良好曝光和亮度的参考图像。

一个= imread ('Office_2.jpg');ref=imread(“office_4.jpg”);

在蒙太奇中显示图像。

蒙太奇({ref})标题(“黑暗图像(左)和参考图像(右)”)

图中包含一个坐标轴。标题为Dark Image(左)和Reference Image(右)的坐标轴包含一个Image类型的对象。

使用256个容器显示每个颜色通道的直方图。您可以使用帮助器功能,显示历史图像通道,包括在示例中。

displayhistographans(A,Ref)

图中包含6个轴。具有输入图像标题直方图的轴1包含直方图类型的对象。具有参考图像标题直方图的轴2包含直方图类型的对象。轴3包含直方图类型的对象。轴4包含直方图类型的对象。轴5包含直方图类型的对象。轴6包含直方图类型的对象直方图类型的ect。

形象A.作为较暗的图像,具有较低箱中的大部分像素。参考图像,r环境足迹,完全填充所有三个RGB通道中的所有256个bins值。

计算暗图像和参考图像的每个颜色通道的唯一8位级别值的数量。您可以使用helper函数,CountUniqueValue,包括在示例中。

numVals=countUniqueValues(A,ref);表(numVals(:,1),numVals(:,2),numVals(:,3),...“VariableNames”, (“红色”“绿色”“蓝色”],...“RowNames”, (“一种”“ref”])
ans =2×3表红-绿-蓝A 205 193 224参考文献256 256

使用三种不同的值均衡暗图像的直方图nbins: 64、128和256。64是默认的bin数量,256是最大的bin数量uint8像素数据。

[B64,hgram64]=imhistmatch(A,ref,64);[B128,hgram128]=imhistmatch(A,ref,128);[B256,hgram256]=imhistmatch(A,ref,256);图形蒙太奇({B64,B128,B256},“大小”,[1 3])标题('输出图像B64 |输出图像B128 |输出图像B256')

图中包含一个坐标轴。标题为Output Image B64 | Output Image B128 | Output Image B256的轴包含一个Image类型的对象。

使用256个容器显示每个颜色通道的直方图。您可以使用帮助器功能,displayThreeHistogramChannels,包括在示例中。

displayThreeHistogramChannels (B64 B128 B256)

图中包含9个轴。标题为输出图像B64直方图的坐标轴1包含一个直方图类型的对象。标题为输出图像B128直方图的坐标轴2包含一个直方图类型的对象。标题为输出图像B256直方图的坐标轴3包含一个直方图类型的对象。坐标轴4包含一个直方图类型的对象。坐标轴5包含一个直方图类型的对象。坐标轴6包含一个直方图类型的对象。坐标轴7包含一个直方图类型的对象。坐标轴8包含一个直方图类型的对象。坐标轴9包含一个直方图类型的对象。

计算三个直方图均衡化图像的每个颜色通道的唯一8位水平值的数量。作为nbins增加时,输出图像的每个RGB通道中的电平数B也会增加。

numVals=countUniqueValues(B64、B128、B256);表(numVals(:,1),numVals(:,2),numVals(:,3),...“VariableNames”, (“红色”“绿色”“蓝色”],...“RowNames”, (“B64”“B128”“B256”])
ans =3×3表红绿蓝___ _____ ____ B64 57 60 58 B128 101 104 104 B256 134 135 136

这个例子展示了如何使用不同数量的箱子执行直方图匹配。

加载通过MRI成像的膝关节16位DICOM图像。

K = dicomread ('knee1.dcm');%读取原始16位图像LevelsK =独特(K (:));确定唯一代码值的数目disp ([凯西:形象的,num2str(长度(LevelsK)),“不同层次”]);
图像K: 448个不同的层次
disp (['最大级别= 'num2str (max (LevelsK)));
最高液位=473
disp (['min level = 'num2str(最低(LevelsK))));
最低级别=0

所有448个离散值都处于低代码值,导致图像看起来很暗。要纠正此项,请缩放图像数据以跨越[0,65535]的整个16位范围。

Kdouble=double(K);% cast uint16 to doublekmult=65535/(最大值(最大值)(kDuble(:));全量程乘法器REF = UINT16(kmult * kdouble);%全范围16位参考图像

使参考图像变暗裁判要创建一个图像A.可以在直方图匹配操作中使用。

%构建凹面弓形曲线用于变暗|参考|。斜坡= [0:65535]/ 65535;pp凹=样条([0.1 .50 .72 .87 1],[0 .025 .25 .5 .75 1]);Ybuf = ppval(pp凹,斜面);/ /ut16bit = uint16(round(65535*Ybuf));通过查找表(LUT)将图像|Ref|调暗。= intlut (Ref Lut16bit);

查看参考图像裁判还有变暗的图像A.。请注意,它们具有相同数量的离散代码值,但整体亮度不同。

次要情节(1、2、1)imshow (Ref)标题('参考:参考图像') subplot(1,2,2) imshow(A) title(“A:图像变暗”);

图中包含2个轴。标题为Ref:参考图像的轴1包含图像类型的对象。标题为A:变暗图像的轴2包含图像类型的对象。

使用带有不同数量箱子的直方图生成直方图匹配的输出图像。首先使用默认的容器数64。然后使用图像中显示的值的数量A.,448个垃圾箱。

b16bit64 = imhistmatch(a(:,:,1),ref(:,:,1));%默认:64个binN =长度(LevelsK);%图像A中唯一的16位码值。B16bitUniq = imhistmatch((:,: 1),裁判(:,:1),N);

查看两个直方图匹配操作的结果。

图subplot(1,2,1) imshow(B16bit64) title(“B16bit64: 64箱”)子地块(1,2,2)imshow(参考)标题([“B16bitUniq:”num2str (N),“垃圾箱”])

图中包含2个轴。标题为B16bit64:64箱的轴1包含image类型的对象。标题为B16BITNIQ:448箱的轴2包含image类型的对象。

输入参数

全部折叠

要转换的输入图像,指定为二维真彩色或灰度图像。返回的图像将接受输入图像的数据类型类。

数据类型:||int16|uint8|uint16

直方图为参考直方图的参考图像,指定为二维真彩色或灰度图像。参考图像提供了等间距nbins输出图像的bin参考直方图J正在努力匹配。

数据类型:||int16|uint8|uint16

参考直方图中等间距的箱数,指定为正整数。除了在图像的直方图中指定等距箱的数量裁判,nbins还表示输出图像中存在的离散数据级别数的上限J

数据类型:

名称-值对的观点

指定可选的逗号分隔的字符对名称、值参数。的名字是参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:imhistmatch (ref,“方法”,“多项式”)匹配图像的直方图到参考图像裁判使用多项式映射技术。

映射技术用于映射的直方图裁判想象,指定为逗号分隔对,由“方法”其中一个值:

  • “统一”-使用基于直方图的强度函数和直方图均衡化。

  • 多项式的-从源和参考图像的累积直方图计算一个三次Hermite多项式映射函数。当参考图像比输入图像暗时,多项式方法是有用的。在这种情况下,多项式方法给出了比均匀方法更平滑的颜色过渡。

输出参数

全部折叠

输出图像,返回为二维真彩色或灰度图像。输出图像是由图像导出的其直方图与输入图像的直方图近似匹配裁判建立与nbins条平行的垃圾箱。形象J与输入图像的大小和数据类型相同吗.输入参数nbins表示图像中包含的离散级别的数量的上限J

数据类型:||int16|uint8|uint16

直方图计数来源于参考图像裁判,指定为向量或矩阵。当裁判是真彩色图像,hgram这是一辆三乘的汽车-nbins矩阵。什么时候裁判是灰度图像,hgram这是一张一乘的票-nbins向量。

数据类型:

算法

的目的不匹配就是变换图像使图像的直方图J匹配从图像中导出的直方图裁判. 它包括nbins等间距的容器,它跨越图像数据类型的全部范围。用这种方法匹配直方图的结果是nbins还表示图像中存在的离散数据级别数的上限J

该算法需要注意的一个重要行为方面是nbins值的增加,表示图像直方图中相邻的填充峰之间快速波动的程度J倾向于增加。这可以从以下16位灰度MRI示例的直方图中看到。

最佳值nbins表示更多输出级别之间的权衡(较大的值nbins),同时最小化直方图的峰值波动(较小的值nbins).

介绍了R2012b