我从物理建模器中获取带有默认色彩映射的图像,如下所示:
我将其转换为3值灰度图像,因为我知道有三个不同的阶段:
以下是我的算法片段,用于根据RGB分析确定像素排序:
[RGB_IMAGE_ARRY{j},map] = imread(fname);
RGB=ind2rgb(RGB_IMAGE_ARRY{j},map);
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
GRAYSCALE_VALUE=zeros(nx,ny);
for X=1:nx
for Y=1:ny
if ((R(X,Y)>0))
GRAYSCALE_VALUE(X,Y)=128;
elseif ( ...
(R(X,Y)==0)&& ...
(G(X,Y)==0)&& ...
(B(X,Y)==0.50)...
)
GRAYSCALE_VALUE(X,Y)=0;
elseif ( ...
(R(X,Y)==0)&& ...
(G(X,Y)>=0)&& ...
(B(X,Y)>=0.50))
GRAYSCALE_VALUE(X,Y)=255;
end
end
end
我在尝试使用MATLAB的阈值化量化函数后,做到了这一点。它对我有用,但我想知道是否有一个更优雅的解决方案来获得相同的结果(而不是通过for循环遍历所有像素)。
答案 0 :(得分:1)
通过使用logical indexing:
,您的循环可以替换为以下两行GRAYSCALE_VALUE(R > 0) = 128;
GRAYSCALE_VALUE((R == 0) & (B >= 0.5)) = 255;