负数如何归一化处理_小白的图像处理入门(一)

这学期有两门课程与图像处理有关,一门是图像处理与内容分析(数字图像处理+机器学习),另一门SLAM课程,SLAM的全称为Simutaneously Localization and Mapping,具体来说就是即使获取图像,处理图像并进行路径规划与场景建模,下面是第一次作业的小结

作业1:实现SSD算法:

SSD算法的思路很简单,假设要找的模块为target, 找的对象是img, 那就不断从img里面截取target大小的子图像,然后计算两个模块每个像素灰度值的差的取绝对值,再平方求和得到误差,误差最小的子图就是匹配得出的对象了 ,想法简单很简单,匹配下面这个玩意儿:

7e04c7e81df67a427aee52fc3a9974f7.png

但是一看结果。。

80c46f9a4e50a26d1c96410da721e8d5.png

这么简单的算法也能出错???

然后一番摸索,甚至从原图中抠图再匹配误差仍然大得惊人,输出一看,咋这么多255?

然后一番思索,发现:

bf11cc94ff3d1e66d8c774a049e09cf3.png

原来,图像每个像素灰度值被表示成了np.int8,两个numpy数组在计算差的时候,负数还会补码,吓得赶紧展开成一维的图像进行处理:

f4ecfe6c4e25dd7c7717101c548ab95c.png

后来发现,在很多代码中都采用了展开成一维,再用.dot()运算,运算速度也快了起来,匹配成功

作业2:实现ZNCC算法:

ZNCC,在这篇文章中有详细的写公式Zero Mean Normalized Cross-Correlation,意为零均值归一化交叉熵,零均值肯定要每项减去均值,归一化意味着要除以标准差,交叉熵体现在两个图片'向量'的点乘上,如果说SSD关注的是像素上的相似性,那么ZNCC关注的,更多是结构上的相似性。

f05dfb07e5a28636b377f400123c300d.png

为了证明上述猜测,可以对原图进行Histogram Specification,即直方图特例化,向检测目标进行转换,图为转化前,参考图,以及转化后图

3af3c6ba97f96f8b72aa9f790fa76a43.png

特例化后,SSD算法明显变好

ZNCC算法评价指标可有下式子计算:

51bb344f9fda7e3d0adfdd8d1e02413e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值