Matlab中非Nan-Sparse变换马赛克图像的有效混合
Posted
技术标签:
【中文标题】Matlab中非Nan-Sparse变换马赛克图像的有效混合【英文标题】:Efficient Blending of Non-Nan-Sparse Transformed Mosaic Images in Matlab 【发布时间】:2011-10-07 22:45:19 【问题描述】:我目前正在改进 VLfeat 主页上的图像 mosaic 示例应用程序的混合部分。在最后的混合阶段,我想合并两个非 nan-sparse 图像,它们都是使用 interp2
和 nan
-flag 的两个图像插值的输出。具体来说,给定两个图像矩阵A
和B
和混合矩阵C
所有相同维度M
-by-N
,我想要@ 中的每个矩阵位置(i
,j
) 987654330@和B
要查是否
A
和 B
在 (i,j)
中都有一个定义的值,因此将 C(i,j)
设为它们的平均值,或者,
A
或 B
在 (i,j)
中有定义的 (~isnan()
) 值,因此将其放入 C(i,j)
或,
A
和 B
在 (i,j)
中都没有定义值,因此 C(i,j) 保持原样
假设 C 被初始化为所有 nan 值。
我还没有找到一种简单而优雅的方式来做到这一点而不必
重塑 A和B变成向量 找到非 nan 向量 索引AI=find(~isnan(A))
和 BI=find(~isnan(B))
在AI
和BI
中找到交集 II
使用II
、AI
和BI
修改与A
和B
相同长度的向量C,如上述三个步骤中所述
将C
重塑回M
-by-N
最终得到想要的结果
我尝试使用矩阵和矩阵索引来表达相同的步骤,但没有成功。这是在 MATLAB 中执行此操作的唯一方法吗?好像有点麻烦。
【问题讨论】:
我简化了标签,我觉得虽然您选择的标签与您的需求相关,但问题是 matlab 通用问题。如果您认为我错了,请重新标记。 好的,谢谢。是否有任何可用的标签使用建议在线 *** 某处? 【参考方案1】:也许我遗漏了一些东西(例如,我不明白为什么需要将矩阵重塑为向量)。
无论如何,这里是一个尝试:
% Unconditionnaly compute the average into temp D matrix
D=(A+B)/2;
% Restore A and B values where B and A are NaN
D(isnan(A))=B(isnan(A));
D(isnan(B))=A(isnan(B));
% Only modify C wherever the final result is not NaN
C(~isnan(D))=D(~isnan(D));
【讨论】:
聪明。我现在会坚持下去。以上是关于Matlab中非Nan-Sparse变换马赛克图像的有效混合的主要内容,如果未能解决你的问题,请参考以下文章