我正在MATLAB中为我的学期项目制作交通标志检测和识别程序。到目前为止,我已经成功地完成了每一步。
图像>标准化图像>缩放&增强图像>>阈值>>形态学操作
我使用以下公式对图像进行了标准化:
NORM_COLOR = COLOR/sqrt(RED^2 + GREEN^2 + BLUE^2);
我用sqrt(3)因子缩放了我的图像,并通过逐元素乘法加强到归一化图像。
在阈值处理中,我将所有三个通道(RGB)归零,此条件为真:
RED< 0.34或绿色> 0.2621
这一切都给了我一张图片,其中所有颜色(红色除外)都是黑色的。这是我得到的图像: Image
现在,当我进行像imerode
这样的形态学操作时,它给了我这个错误:
使用morphmex时出错左输入图像可能不包含NaN。
morphop中的错误(第69行)
B = morphmex(mex_method,B,double(getnhood(se(k))),getheight(se(k)),unpacked_M);imerode中的错误(第123行)
B = morphop(A,SE, '侵蚀',mfilename,varargin {:});anas中的错误(第64行)
img_seg = imerode(img,se);
这是我为侵蚀写的代码:
se = strel('disk', 2);
img_seg = imerode(img,se);
imshow(img_seg);
任何人都可以帮我解决这个问题吗?谢谢你:)
答案 0 :(得分:1)
尽量避免被零除:
NORM_COLOR = COLOR/sqrt(RED^2 + GREEN^2 + BLUE^2+0.0000001);