在Matlab中计算中值图像

3 matlab image image-processing median

我是matlab的新手,所以请原谅我,如果我在这里要求明显的:我所拥有的是一组彩色摄影图像(所有相同的尺寸).我想要做的是计算每个像素的中值颜色值.

我知道matlab中有一个中值滤波器,但据我所知,它并不能完全符合我的要求.因为我想计算整个图像集合之间的中值,对于每个单独的像素.

因此,例如,如果我有三个图像,我希望matlab计算(对于每个像素)这三个图像中的哪个颜色值是中值.我怎么会这样做,有人知道吗?


编辑:从我能想到的,我将不得不将所有图像加载到一个矩阵中.矩阵必须具有4个维度(高度,宽度,rgb,图像),并且对于每个像素,每个颜色在第4维度(图像之间)中找到中值.这是正确的(并且可能)吗?我怎么能这样做?

pro*_*ast 7

你的直觉是正确的.例如,如果您有图像image_1,image_2,image_3,则可以将它们分配给4维矩阵:

X(:,:,:,1) = image_1;
X(:,:,:,2) = image_2;
X(:,:,:,3) = image_3;
Run Code Online (Sandbox Code Playgroud)

然后使用:

Y=median(X,4);
Run Code Online (Sandbox Code Playgroud)

获得中位数.

  • +1为优雅的解决方案.虽然为RGB像素定义"中值"颜色有点不确定; 就目前而言,你已经分别取R,G和B的中位数,这将产生一个非常奇怪的图像. (2认同)
  • 那么这取决于你想要如何定义彩色像素的"中位数".例如,如果您正在处理照片,那么"中位数"只有在您将照片投射为黑白时才有意义.你的用例是什么? (2认同)