我有一个针对8位图像分析的matlab脚本,我正在尝试通过减去没有物体存在的背景来增强图像中的物体。在像素级别上,我想做的是:
if B-I>50 then E=I
else E=255-B-I
在这里,B
代表背景,I
代表图像,E
代表增强后的图像。我知道可以通过以下方式循环遍历图像矩阵的每个元素来实现这一点:
diff=imsubtract(B,I);
nrows=1024;
ncols=1360;
for r=1:nrows
for c=1:ncols
if diff(r,c)>50
E=I(r,c);
else
E=255-diff(r,c);
end
end
end
但是在处理多张图片时,这个方法可能会比较慢。我也尝试了以下方法:
E=255-diff;
E(diff>50)=I;
但是出现了以下错误:
在赋值“
A(I) = B
”中,B和I中的元素数量必须相同。有什么优化的建议将不胜感激!
diff
作为变量名。在 Matlab 中,它是一个标准函数,这样会导致重载。这可能会令人困惑并导致意外问题的发生。 - Dennis Jaheruddin