取代NaN值在一个矩阵值x的位置

2视图(30天)
Tooba Shelkh
Tooba Shelkh 2020年5月10日
回答: 图像分析 2020年5月10日
假设我有一个矩阵(实际上认为条纹的灰度图像nan):
[3 4 4 2 4 6 8 6 3 2
4 5南南2 3 4 2 1 2
2南南南3 2 4 3 1 2
3南南南3 4 2 5 3 2
4南南南2 4 1 3 2 5
4 5南南2 3 4 2 1 2
2南南南3 2 4 3 1 2
3 2南南南4 2 5 3 2
4 3 2南南南4 1 3 2
4 3 2 3南南2 1 3 2
]
我想用“x”替换所有nan值后,例如x = 3第二和第三行—如:
4 5 4 3 2 3 4 2 1 2
2 3 2 4 3 2 4 3 1 2,
其实我想与背景色填充NaN顺利,南行显然是不可见的。
我曾经尝试过使用Matlab函数如fillmissing和fillgaps,和一个函数inpaint_nans从Matlab file_exchange(),但它们都留下一个明确突出的背景。
附件是真正的形象,nan取代了0。
任何想法,我们将不胜感激。
谢谢。
2的评论
Guillaume
Guillaume 2020年5月10日
请注意, isub2 矩阵连接不能包含nan的类型 uint8 。只有矩阵的类型 可以包含NaN。

登录置评。

答案(3)

Guillaume
Guillaume 2020年5月10日
编辑:Guillaume 2020年5月10日
regionfill 似乎你之后的函数。所以:
newimage = regionfill (yourimage isnan (yourimage));
2的评论
Guillaume
Guillaume 2020年5月10日
“其实我想填满NaN背景颜色顺利,南显然是不可见的。”
在我听来就像用户希望填充背景与周边地区的连续,这正是 regionfill 是要做的。实际的填充算法并不重要。
如果 regionfill 不做的行为,那么我就试一试 inpaintCoherent 。这两个是为了填补缺失的像素与背景,这样充满地区并不突出。

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2020年5月10日
编辑:沃尔特·罗伯森 2020年5月10日
c =大小(isub2 2) - x: 1: 1
掩码= isnan (isub2 (:, c));
isub2(面具,c) = isub2(面具,c + x);
结束
这段代码可以处理流的nan长于x, x和能够处理的可能性进一步也可能是南:它从右边开始,左移动,所以这些nan早就已经被填满了。
它无法处理的一件事是南x列在最后的可能性,没有x进一步复制列。我能想到的一个简单的和不合理的修改处理南x列在最后 除了 在最后一列;最后一列没有任何进一步的复制。

图像分析
图像分析 2020年5月10日
你可以尝试消除锯齿通过加权和原始加上一个模糊的版本的南图片:
m = [3 4 4 2 4 6 8 6 3 2
4 5南南2 3 4 2 1 2
2南南南3 2 4 3 1 2
3南南南3 4 2 5 3 2
4南南南2 4 1 3 2 5
4 5南南2 3 4 2 1 2
2南南南3 2 4 3 1 2
3 2南南南4 2 5 3 2
4 3 2南南南4 1 3 2
4 3 2 3南南2 1 3 2
]
次要情节(2 2 1);
imshow (m, [],“InitialMagnification”,800);
标题(“原始矩阵”);
impixelinfo
%定义x的形象。
x = 2;
xImage = x *的(大小(m));
nanLocations = 2 * isnan (m)
次要情节(2,2,2);
imshow (nanLocations []);
标题(“南位置”);
impixelinfo
%模糊nanLocations百分比。
windowWidth = 3;
内核= 1 (windowWidth) / windowWidth ^ 2;
模糊= conv2 (nanLocations内核,“相同”)
%正常化
模糊=模糊/ max(模糊(:));
次要情节(2、2、3);
imshow(模糊,[],“InitialMagnification”,800);
标题(“模糊”);
impixelinfo
%使nan零所以我们可以使加权和
米(isnan (m)) = 0;
%做加权和
输出= m。*(1 -模糊)+ xImage。*模糊;
次要情节(2、2、4);
imshow(输出,[],“InitialMagnification”,800);
标题(“输出”);
impixelinfo

标签

社区寻宝

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

开始狩猎!