主要内容

imhistmatch

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

描述

例子

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

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

  • 如果是真彩色RGB图像和裁判那么是灰度图像吗imhistmatch匹配的每个通道根据单一直方图导出裁判

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

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

例子

J= imhistmatch (裁判nbins使用nbins在给定图像数据类型的适当范围内等距的箱子。返回的图片J不超过nbins离散的水平。

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

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

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

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

例子

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

例子

Jhgram) = imhistmatch (___返回参考图像的直方图裁判用于匹配hgramhgram是1 -nbins(当裁判是灰度)还是3乘-nbins(当裁判是真彩色)矩阵,在哪里nbins是柱状图框的数量。在每一行hgram的单一颜色通道的直方图存储裁判

例子

全部折叠

这些在不同时间拍摄的航拍图像,代表了马萨诸塞州康科德相同地形的重叠视图。这个例子演示了输入图像一个裁判可以是不同大小和图像类型。

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

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

获取一个

大小(一个)
ans =1×32036 3060 3

获取裁判

大小(Ref)
ans =1×22215 2956

请注意形象一个裁判大小和类型不同。图像一个是真彩色的RGB图像,而图像裁判是一幅灰度图像。两个图像都是数据类型uint8

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

B = imhistmatch (Ref);

显示RGB图像一个,参考图像裁判,直方图与RGB图像匹配B.图像在显示前会调整大小。

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

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

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

Figure包含一个轴对象。标题为参考灰度图像的轴对象包含一个类型为图像的对象。

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

Figure包含一个轴对象。标题为Histogram Matched RGB Image的轴对象包含一个类型为Image的对象。

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

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

Figure包含一个轴对象。标题为Input Image(左)和Reference Image(右)的轴对象包含一个类型为Image的对象。

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

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

Figure包含一个轴对象。使用多项式方法(左)和均匀方法(右)的标题直方图匹配图像的轴对象包含一个类型图像的对象。

采用均匀方法得到的直方图匹配图像在天空和道路中引入了虚假色彩。采用多项式方法得到的直方图匹配图像不会出现这种伪影。

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

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

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

显示图像蒙太奇。

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

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

使用256个箱子显示每个颜色通道的直方图。你可以使用辅助函数,displayHistogramChannels,它包含在示例中。

displayHistogramChannels (ref)

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

图像一个作为较暗的图像,它的大部分像素在较低的框中。参考图像r英孚,完全填充所有三个RGB通道中的所有256个bins值。

数唯一的8位水平值的每个颜色通道的黑暗和参考图像。你可以使用辅助函数,countUniqueValues,它包含在示例中。

numVals = countUniqueValues (ref);表(numVals (: 1), numVals (:, 2), numVals (:, 3),...“VariableNames”, (“红色”“绿色”“蓝色”),...“RowNames”, (“一个”“ref”])
ans =2×3表红绿蓝___ _____ ____ A 205 193 224 ref 256 256 256

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

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

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

使用256个箱子显示每个颜色通道的直方图。你可以使用辅助函数,displayThreeHistogramChannels,它包含在示例中。

displayThreeHistogramChannels (B64 B128 B256)

图包含9个轴对象。轴对象1与标题直方图输出图像B64包含一个直方图类型的对象。轴对象2与标题直方图的输出图像B128包含一个直方图类型的对象。轴对象3与标题直方图输出图像B256包含一个直方图类型的对象。轴对象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 (['最小级别= 'num2str(最低(LevelsK))));
最小等级= 0

所有448个离散值都处于低编码值,这使得图像看起来很暗。为了纠正这个问题,缩放图像数据以跨越整个16位范围[0,65535]。

Kdouble =双(K);%铸造uint16加倍kmult = 65535 / (max (max (Kdouble (:))));全量程倍增器%Ref = uint16 (kmult * Kdouble);%全范围16位参考图像

使参考图像变暗裁判要创建一个图像一个可用于直方图匹配操作。

%建立凹弓形曲线用于暗化|Ref|。斜坡= [0:65535]/ 65535;pp凹=样条([0.0.1 . 50.72 .87],[0.025 . 25.5 .75 1]);Ybuf = ppval(pp下凹,斜面);Lut16bit = uint16(轮(65535*Ybuf));%通过查找表(LUT)将图像|Ref|变暗。= intlut (Ref Lut16bit);

查看参考图片裁判黑暗的图像一个.请注意,它们有相同数量的离散码值,但不同的整体亮度。

次要情节(1、2、1)imshow (Ref)标题(裁判:参考图像的) subplot(1,2,2) imshow(A)标题答:黑暗的形象的);

图中包含2个轴对象。带有标题Ref: Reference Image的轴对象1包含一个类型为Image的对象。轴对象2标题A:暗图像包含一个类型为Image的对象。

使用不同数量的柱状图生成与柱状图匹配的输出图像。首先使用默认的容器数64。然后使用图像中显示的值的数量一个448箱。

B16bit64 = imhistmatch((:,: 1),裁判(:,:1));%默认值:64个箱子N =长度(LevelsK);%图像A中唯一的16位代码值的数量。B16bitUniq = imhistmatch((:,: 1),裁判(:,:1),N);

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

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

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

输入参数

全部折叠

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

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

参考图像,其直方图是参考直方图,指定为二维真彩色或灰度图像。参考图像提供等间距nbins输出图像的Bin参考直方图J就是试着去匹配。

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

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

数据类型:

名称-值参数

指定可选的逗号分隔对名称,值参数。的名字参数名是和吗价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

映射技术用来映射直方图裁判图像,指定为逗号分隔的对“方法”其中一个价值观是:

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

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

输出参数

全部折叠

输出图像,以二维真彩色或灰度图像返回。输出图像由图像派生而来谁的直方图与输入图像的直方图近似匹配裁判建立与nbins条平行的垃圾箱。图像J是否与输入图像的大小和数据类型相同.输入参数nbins表示图像中包含的离散电平的数目的上限J

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

从参考图像得到的直方图计数裁判,表示为向量或矩阵。当裁判是一个真彩色图像,hgram是一个3×-nbins矩阵。当裁判是灰度图像,hgram是1 -nbins向量。

数据类型:

算法

的目的imhistmatch就是变换图像使图像的直方图J匹配图像的直方图裁判.它由nbins等间距的箱子,跨越图像数据类型的全部范围。用这种方法匹配直方图的结果是nbins也表示图像中显示的离散数据级别数目的上限J

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

的最优值nbins表示更多输出水平(更大的值)之间的权衡nbins),同时使直方图中的峰值波动最小(值较小的nbins).

介绍了R2012b