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 图像,它们都是使用 interp2nan-flag 的两个图像插值的输出。具体来说,给定两个图像矩阵AB 和混合矩阵C 所有相同维度M-by-N,我想要@ 中的每个矩阵位置(i,j) 987654330@和B要查是否

AB(i,j) 中都有一个定义的值,因此将 C(i,j) 设为它们的平均值,或者, AB(i,j) 中有定义的 (~isnan()) 值,因此将其放入 C(i,j) 或, AB(i,j) 中都没有定义值,因此 C(i,j) 保持原样

假设 C 被初始化为所有 nan 值。

我还没有找到一种简单而优雅的方式来做到这一点而不必

重塑 A和B变成向量 找到非 nan 向量 索引 AI=find(~isnan(A))BI=find(~isnan(B))AIBI 中找到交集 II 使用IIAIBI修改与AB相同长度的向量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变换马赛克图像的有效混合的主要内容,如果未能解决你的问题,请参考以下文章

采用DCT进行图像压缩

Matlab中VLFeat的图像拼接

用matlab 如何将图片模糊处理

matlab 灰度变换函数

如何在 Matlab 中循环保存文件?

图像几何基于图像空间变换(仿射变换)matlab源码含 GUI