1

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

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

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

谢谢你。

4

2 回答 2

4

使用roifilt2. 以下代码直接取自Matlab 文档站点

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)
于 2012-05-09T20:45:49.907 回答
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.

于 2012-05-09T20:37:58.670 回答