填充矩阵中的区域

时间:2012-08-29 01:38:40

标签: matlab image-processing graphics

enter image description here

正如你在本图中所看到的,我有3个“线”,它们与中间的零(或NaN)值不是线性的。

我想通过平均“行”部分中的所有值来创建具有单个值的3个填充区域的图片,并将其填充到下面的零区域。

平均不是问题,并且使用填充或补丁命令也不是问题,我的问题是如何识别这里的一段数据,它的内容不是线性的或同质的,而是有效地创建三个切片因为数据中的实际值必须保持不变。

会欣赏任何想法!

感谢

1 个答案:

答案 0 :(得分:0)

从这样的色彩图中说出来有点难以辨认,但看起来沿着色谱柱的不均匀性相当差。如果是这种情况,那么最好将每列的值与两个相邻列进行比较并创建偏差指数。

只是捅了一下 - 我会用inhomoge作为你的不均匀图像的俚语

predictedInhomoge=(inhomoge(1:end-2)+inhomoge(3:end))/2;
biasImage=(predictedInhomoge-inhomoge(2:end-1))./(inhomoge(2:end-1)+predictedInhomoge);
image(255*biasImage/max(biasImage(:)));

如果您的蓝色数据实际上是零而不仅仅是小值,则上面的biasImage会有很多无意义的Inf值。如果是这种情况,只需将分母从biasImage等式中删除,使其不再标准化。

biasImage=(predictedInhomoge-inhomoge(2:end-1));

如果biasImage看起来像最高值反映了您的不均匀性,那么您就可以开展业务,只需选择一个阈值并重新计算其上方的值。如果没有,那么我会考虑尝试贝叶斯算法。

可能不需要说,但任何NaN都很容易找到和删除。