如何在MATLAB中编写if else条件语句?

时间:2017-02-21 04:33:48

标签: arrays matlab if-statement image-processing

vm.swappiness=10
vm.vfs_cache_pressure=140
vm.min_free_kbytes=2013265 

我正在尝试实现一种读取皮肤病变图像的算法,并在提取R,G和B值后,根据 if条件将病变分类为健康皮肤或非健康皮肤

然而,当我尝试实现它时,只有非健康的皮肤阵列在for循环内得到更新,健康的皮肤阵列保持为零。我不知道如何克服这个故障。请帮忙。

for each pixel, do
      if R>90 & R>G & R>B 
         classify the pixel as **Healthy**
      else 
         classify the pixel as non-healthy 

2 个答案:

答案 0 :(得分:1)

运行循环时,每次只检查相同的矩阵。

此处RGB都是二维矩阵。

我认为你想要检查每个像素的R,G和B值。

所以,当你做到了

if R > 90 & R > B & R > G

它正在做的是检查R矩阵的全部元素是> 90,这在大多数情况下可能不正确。

所以正确的实现是:

if R(i, j) > 90 & R(i, j) > G(i, j) & R(i, j) > B(i, j)

更改此代码,它应该可以正常工作。如果您想进一步澄清,请发表评论。

答案 1 :(得分:0)

作为替代方案,矢量化方法:

R=colorSkin(:, :, 1);
G=colorSkin(:, :, 2);
B=colorSkin(:, :, 3);
skin=repmat(R>90 & R>B & R>G,1,1,3);

hs=colorSkin;
hs(~skin)=0;
nhs(skin)=0;

此代码应该比循环

快得多
相关问题