正如你在本图中所看到的,我有3个“线”,它们与中间的零(或NaN)值不是线性的。
我想通过平均“行”部分中的所有值来创建具有单个值的3个填充区域的图片,并将其填充到下面的零区域。
平均不是问题,并且使用填充或补丁命令也不是问题,我的问题是如何识别这里的一段数据,它的内容不是线性的或同质的,而是有效地创建三个切片因为数据中的实际值必须保持不变。
会欣赏任何想法!
感谢
答案 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都很容易找到和删除。