将阈值应用于图像

时间:2019-02-06 13:50:47

标签: matlab image-processing

我正在尝试编写一个函数来对灰度图像F和阈值t0 ≤ t ≤ 255)进行阈值处理,以使{{1} }和r = 0

我试图实现这一点,但是r < t不会产生输出。

r = 255

这应该对此图像进行阈值处理。但是,它没有这样做。我在做什么错了?

1 个答案:

答案 0 :(得分:3)

最好使用logical indexing

f(f<t)=0; % set all elements of f<t to 0
f(~(f==0))=1; % Set all elements where f is not 0 (i.e. the rest) to 1

f<t很好地生成了一个符合条件的逻辑矩阵,但是随后您进行了f=1f=0的操作,这意味着您将f的全部设置为一个标量(一个或零),它当然只是绘制黑色或白色正方形。取而代之的是,使用逻辑矩阵作为对矩阵本身的索引操作,然后为每个true条目分配所需的值,就像上面一样。

此外,function定义位于其自己的文件中或位于脚本的底部。因此,您可以将函数另存为imgThreshold.m,其余部分留给脚本使用,或者先调用脚本并在调用function f = imgThreshold(img, t)

之后放置imshow等。