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
答案 0 :(得分:1)
运行循环时,每次只检查相同的矩阵。
此处R
,G
,B
都是二维矩阵。
我认为你想要检查每个像素的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;
此代码应该比循环
快得多