文档

imhistmatch

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

语法

J = imhistmatch(I,ref)
J = imhistmatch(I,ref,nbins)
J = imhistmatch(___、名称、值)
[J,hgram] = imhistmatch(___

描述

例子

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

  • 如果两个而且裁判是真彩色RGB图像,那么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(当裁判是灰度)还是3by -nbins(当裁判是真彩色)矩阵,在哪里nbins是直方图箱的数量。每一行hgram的单色通道的直方图裁判

例子

全部折叠

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

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

A = imread(“concordaerial.png”);参考资料:“concordorthophoto.png”);

获取尺寸一个

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

获取尺寸裁判

大小(Ref)
ans =1×22215 2956

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

生成直方图匹配输出图像。的每个通道匹配一个的单直方图裁判.输出图像B具有图像的特点一个—RGB镜像,大小和数据类型与image相同一个.图像的每个RGB通道中存在的不同层次的数量B是否与灰度图像建立的直方图中的箱子数量相同裁判.在这个例子中,的直方图裁判而且B有默认的箱子数量,64。

B = imhistmatch(A,Ref);

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

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

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

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

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

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

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

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

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

在本例中,您将看到对输出图像的影响J在图像的目标直方图中改变等距箱的数量裁判,取值范围从默认值64到最大值256uint8像素数据。

下面的图片是用数码相机拍摄的,代表了同一场景的两次不同曝光。

A = imread(“office_2.jpg”);%暗图像参考资料:“office_4.jpg”);%参考图像

图像一个,是较暗的图像,它的像素优势在较低的箱子。参考图像,裁判,是一个正确曝光的图像,并在所有三个RGB通道中完全填充所有可用的bins值:如下表所示,所有三个通道都有256个8位像素值的唯一级别。

红色通道的唯一8位电平值为205一个256表示裁判.绿色通道的唯一8位级别值为193一个256表示裁判.蓝色通道的唯一8位电平值为224一个256表示裁判

示例生成输出图像B使用三个不同的值nbins: 64、128、256。函数的目标imhistmatch就是变换图像一个这样,输出图像的直方图B的直方图是否匹配裁判建立与nbins等间距的箱子。结果,nbins表示图像中出现的离散数据层数的上限B

[B64, hgram] = imhistmatch(A, Ref, 64);[B128, hgram] = imhistmatch(A, Ref, 128);[B256, hgram] = imhistmatch(A, Ref, 256);

表中描述了每个输出图像的唯一8位电平值的数量。请注意,nbins增加时,输出图像的每个RGB通道中的层数B也增加了。

nbins 输出图像 唯一直方图值的个数
64 B64 57
128 B128 101
256 B256 134

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

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

K = dicomread(“knee1.dcm”);%读取原始16位图像LevelsK = unique(K(:));%确定唯一代码值的数量disp ([图片K:num2str(长度(LevelsK)),“不同的层次”]);
图像K: 448个不同的层次
disp (['max level = 'num2str(max(LevelsK))]);
最高等级= 473
disp (['min level = 'num2str(min(LevelsK))]);
最低水平= 0

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

Kdouble = double(K);% cast uint16到doublekmult = 65535/(max(max(Kdouble(:))));%全程乘法器Ref = uint16(kmult*Kdouble);%全范围16位参考图像

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

%建立凹弓形曲线变暗|参考|。Ramp = [0:65535]/65535;pp凹=样条([0.1 .50 .72 .87 1],[0.025 .25 .5 .75 1]);Ybuf = ppval(pp凹面,斜面);Lut16bit = uint16(round(65535*Ybuf));通过查找表(LUT)传递图像|参考|使图像变暗。A = intlut(Ref,Lut16bit);

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

subplot(1,2,1) imshow(Ref)“参考图片”) subplot(1,2,2)“A:暗影”);

使用具有不同箱数的直方图生成与直方图匹配的输出图像。首先使用默认的64个箱子。然后使用图像中呈现的数值一个, 448个垃圾箱。

B16bit64 = imhistmatch(A(:,:,1),Ref(:,:,1));%默认:64个箱子N = length(LevelsK)图像A中唯一16位码值的%。B16bitUniq = imhistmatch(A(:,:,1),Ref(:,:,1),N);

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

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

输入参数

全部折叠

要转换的输入图像,指定为2-D真彩色或灰度图像。返回的图像将采用输入图像的数据类型类。

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

参考图像,其直方图为参考直方图,指定为二维真彩色或灰度图像。参考图像提供等间距nbinsBin参考直方图输出图像J试图匹配。

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

参考直方图中等距箱数,以正整数表示。除了指定图像直方图中等距箱的数量外裁判nbins也表示输出图像中出现的离散数据层数的上限J

数据类型:

名称-值对参数

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

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

全部折叠

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

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

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

输出参数

全部折叠

输出图像,返回为2-D真彩色或灰度图像。输出图像是由图像派生的谁的直方图与输入图像的直方图近似匹配裁判建立与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中引入

这个话题有用吗?