一、单阈值处理
情景:提取图片中的RGB=[255,0,19],误差在+-20,由于rgb通道为[0-255],所以为单阈值。
一开始是想到用循环来判断某点像素是否满足要求:
x=[255,0,19];
imshow(f)
fsize=size(f);
tic
for row=1:fsize(1)
for colon=1:fsize(2)
a=0;
for page=1:3
if abs(double(f(row,colon,page))-x(page))<20
a=a+1;
end
end
if a<3
for page=1:3
f(row,colon,page)=uint8(0);
end
else
for page=1:3
f(row,colon,page)=uint8(255);
end
end
end
end
toc
此算法还是简单一点的,只是得出给定RGB的左右20,并不能自定范围,然而仍旧需要0.35秒左右。
查了很多论坛,博客都说循环可以用并行来做,但是使用parfor报了一对错,并没有成功,而且就算并行,电脑8核,也需要0.15秒,速度仍太慢。
后来明白原因,实