如何imresize()计算插值权重和索引?

2视图(30天)
imresize () 函数,它调用 matlab.images.internal.resize.contributions () 计算权重和指标向量的大小尺寸。我想了解这背后的逻辑是什么 贡献() 函数,特别是计算的步骤输入像素参与计算的指数k输出像素行k指数矩阵, 指数= bsxfun (@plus(左)0 p - 1): ”。
谢谢。

答案(1)

为副总经理
为副总经理 2022年5月10日
编辑:为副总经理 2022年5月10日
如果我记得,这本质上是一个窗口的操作在一个向量在这一点上,你发现与窗口相关的指数每一步的向量。的变量 最左边的指数被认为是对于给定窗口的位置,这是一个列向量。 P 是一个有效的窗口宽度(标量)。
为了在左做算术运算(一个列向量)和0:p - 1(一个行向量),您需要使用bsxfun ()。R2016b以来,这个操作可以没有它,但使用bsxfun()的传统方法是做这种数组扩张。
不管怎样,结果是一个二维数组的索引输入向量。
同样的权重数组;u是输入坐标向量(列)和指数矩阵中减去,给指标到内核本身(这是由dim2之前的结果)。内核然后本质上作为一个查找表,并可以计算权重的完整列表。
我忘记的细节的上下文的贡献(),所以这个解释可能有点模糊。很久我挖通过这些文件,和我从未打算包装所使用的具体方法。
如果我想真的凭直觉知道发生了什么,我的代码复制并粘贴到一个新文件并修改它tor作为脚本运行一些简单和容易理解的输入。我就开着罩运行它,可以这么说。观察输入、中间计算和输出。它是一个足够短文件应该很容易做到。
1评论
中王
中王 2022年5月10日
编辑:中王 2022年5月10日
谢谢你的回复。我在想同样的事。我认为indicies矩阵是某种形式的窗口操作定位附近的像素插值,但背后的数学我很好奇这些indicises如何发现。
例如,如果我想调整一个任意3 x3矩阵2 x4,第一个维度将调整行,所以3 x3 - > 2 x3。在这种情况下,我可以理解为什么u =[1.25, 2.75],但是我不明白为什么左边像素(2,1)”。
第二维度,它会2 x3 - > 2 x4,在这种情况下u = (0.8725, 1.625, 2.375, 3.125), (2, 1, 0, 1]”。所以我的问题是这背后的大意左边的指数以及算术运算的左(一个列向量)和0:p - 1(一个行向量)。

登录置评。

类别

找到更多的在调整和重塑矩阵帮助中心文件交换

下载188bet金宝搏


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!