主要内容

imlincomb

图像线性组合

描述

例子

Z= imlincomb (K1A1K2A2、……Kn一个计算图像的线性组合,A1A2,…,一个,带权重K1K2,…,Kn根据:

Z = k1 * a1 + k2 * a2 +…+ Kn *一个

例子

Z= imlincomb (K1A1K2A2、……Kn一个K添加偏移量,K,为线性组合:

Z = k1 * a1 + k2 * a2 +…+ Kn*An + K

例子

Z= imlincomb (___outputClass的输出类Z

例子

全部折叠

将图像读入工作区。

I = imread(“cameraman.tif”);

在线性组合中使用1.5的系数缩放图像。

J = imlincomb(1.5,I);

显示原始图像和处理后的图像。

imshow(我)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

图imshow (J)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

将图像读入工作区。

I = imread(“cameraman.tif”);

创建图像的低通过滤副本。

J = uint8(filter2(fspecial(“高斯”),我));

找到差值图像,并使用的线性组合将0值移到128而且J

K = imlincomb(1,I,-1,J,128);%K(r,c) = I(r,c) - J(r,c) + 128

显示产生的差异图像。

imshow (K)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

读两灰度uint8图像到工作区。

I = imread(“rice.png”);J = imread(“cameraman.tif”);

使用线性组合添加图像。将输出指定为类型uint16避免截断结果。

K = imlincomb(1,I,1,J,“uint16”);

显示结果。

imshow (K, [])

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

这个例子展示了在对图像执行一系列算术运算时嵌套调用与使用线性组合之间的区别。为了说明imlincomb执行截断结果之前的所有算术运算,比较计算两个数组的平均值的结果,X而且Y,使用嵌套算术函数和使用imlincomb

创建两个数组。

X = uint8([255 0 75;44 225 100]);Y = uint8([50 50 50 50;50 50 50]);

使用嵌套的算术函数对数组求平均值。计算返回的平均值Z (1, 1),函数imadd添加255和50并将结果截断为255,然后将其传递给imdivide.返回的平均值Z (1, 1)是128。

Z = imdivide(imadd(X,Y),2)
Z =2x3 uint8矩阵128 25 63 47 128 75

相比之下,imlincomb以双倍精度执行加法和除法运算,只截断最终结果。返回的平均值Z2 (1, 1)是153。

Z2 = imlincomb(.5,X,.5,Y)
Z2 =2x3 uint8矩阵153 25 63 47 138 75

输入参数

全部折叠

图像系数,指定为数值标量。

数据类型:

输入图像,指定为相同大小和类的数字数组。

偏移量,指定为数值标量。

数据类型:

的输出类Z,指定为包含数值类名称的字符串标量或字符向量。

例子:“uint16”

例子:“替身”

输出参数

全部折叠

线性组合图像,作为大小相同的数字数组返回A1.如果A1逻辑,然后Z,否则ZA1

提示

  • 在对一对图像执行一系列算术运算时,如果使用imlincomb组合操作,而不是嵌套调用个别算术函数,例如imadd.当嵌套对算术函数的调用,并且输入数组是整数类时,每个函数在将结果传递给下一个函数之前都会截断并舍入结果,从而失去最终结果的准确性。imlincomb计算输出的每个元素Z分别,在双精度浮点中。如果Z是一个整数数组,imlincomb剪辑元素Z超出整数类型的范围并舍入小数值。

扩展功能

版本历史

R2006a之前介绍过