在MATLAB中对“选定”像素应用图像滤波技术

时间:2012-05-09 20:11:38

标签: matlab image-processing 3d filtering threshold

我的算法的特征提取步骤,对“3D”图像应用一些滤镜,并使用滤镜像素的值作为图像原始像素的特征。

我的问题是我只需要小像素子集(阈值像素)的特征,而不是所有图像。并且过滤所有图像而不是仅仅是一些像素是耗时的。

我的问题是如何只过滤图像的选定像素?为此目的是否有任何matlab函数?(我想我不能使用imfilter)

谢谢。

2 个答案:

答案 0 :(得分:4)

使用roifilt2。以下代码直接来自Matlab Documentation site

I = imread('eight.tif');

首先,定义感兴趣的区域:

c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);

在您的情况下,BW已经定义,因此您可以跳过上一步。

现在,应用过滤器:

H = fspecial('unsharp');
J = roifilt2(H,I,BW);
figure, imshow(I), figure, imshow(J)

答案 1 :(得分:2)

以下是Matlab中的快速矩阵运算,它为图像应用了一个阈值:

% let's assume i is your image (matrix)
thresh = 60; % set the threshold for pixel values
i = uint16(i > thresh) .* i; % adjust uint16 to your: class(i)

这会将所有像素设置为低于阈值的0 如果您希望之后将过滤器应用于较小的区域,则可以检查图像的哪些列和行包含大于零的值,并相应地裁剪图像或使用roipoly定义感兴趣的区域。