我的算法的特征提取步骤,在“3D”图像上应用了一些过滤器,并使用过滤像素的值作为图像原始像素的特征。
我的问题是我只需要一小部分像素(阈值像素)的特征,而不是所有图像。并且过滤所有图像而不是仅过滤一些像素非常耗时。
我的问题是如何仅过滤图像的选定像素?有没有为此目的的matlab函数?(我想我不能使用imfilter)
谢谢你。
我的算法的特征提取步骤,在“3D”图像上应用了一些过滤器,并使用过滤像素的值作为图像原始像素的特征。
我的问题是我只需要一小部分像素(阈值像素)的特征,而不是所有图像。并且过滤所有图像而不是仅过滤一些像素非常耗时。
我的问题是如何仅过滤图像的选定像素?有没有为此目的的matlab函数?(我想我不能使用imfilter)
谢谢你。
使用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)
这是 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
.