计算机视觉识别新增物品笔记一

应工作要求,识别固定摄像头前后两个图片中新增物品的部分,抠出新增物品的像素,其它背景则进行删除。

本系列只作为笔记来写不作为教程, 难免会有些照顾不周,请多包涵。
先上原背景图
在这里插入图片描述

再来一张新物品图
在这里插入图片描述
没错就是多加了一把钥匙而已。现实情况远比这个复杂。先由简单到复杂。

百度了一下, 一般思路是新图减去背景图的所得的就是新增物品图。
按照这种思路代码如下。

import numpy as np
import matplotlib.image as mpimg # mpimg 用于读取图片
import matplotlib.pyplot as plt # plt 用于显示图片

beijngtu = mpimg.imread('beijingtu.jpg') # 背景图 读取和代码处于同一目录下的 
yaoshitu = mpimg.imread('yaoshitu.jpg') # 钥匙图
newtu = np.abs(yaoshitu-beijngtu ) 
print(beijngtu.shape)
#whereExpress =  (newtu > 50) #构造对原始数据进行筛选的条件
#newtu2 = np.where(whereExpress,newtu,0) #把满足条件的选择出来,原封不动的保存,不满足条件的元素置零

#newtu = np.where(newtu > 20)
#print(type(lena))
# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
#newtu.shape #(512, 512, 3)


plt.imshow(newtu) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()

效果如下图,人眼是看不出来的,可是电脑能看出来。多了很多的杂波。这些杂波是由于光线变化,阴影,摄像头抖动,摄像头自动变焦。 等问题引起的微小变化。在计算机里能清楚的看清楚变化。人眼是识别不到这么小的变化的, 这并不是退化而是一种为了适应环境而改进的能力。 如果没有这种忽略微小细节的能力,那么我们人类在古战场中估计早就被淘汰了。
在这里插入图片描述
那么问题来了, 如何忽略这种微小变化呢?
人眼来看一片嘈杂,那么 -100 试试看代码改成下面的

newtu = np.abs(yaoshitu-beijngtu - 100) # 多减去了100,

在这里插入图片描述

然后后面是各种方法进行处理。得到的效果始终是无法完全删除背景中的像素。图中由于自动变焦引起的轮廓仍然还存在(图中左上角的鼠标键盘还能看出来,右边的机箱也还能看出来。)

今天是第一次尝试, 后面会继续更新尝试
总结了一下需要解决的分为两个问题。
一,光线变化引起的每个像素色差问题,相减带来的效果就是一片嘈杂。
解决方案:
1.像素数值阶梯化,通俗点讲就是先把每个像素四舍五入,然后再相减就去掉的比较完整了。.
2.当然也可以过滤掉像素差值比较小的数值。
3.也可以使用其它滤镜。

二:还需要再处理抖动或变焦引起的像素移位。
1.暂无好方法。也许降采样会是个好方法。

对于有经验的人来讲,也许会告诉我怎么怎么弄。 直接给我代码
但是我感觉不如自己想出来的来得爽。重在过程嘛。。 当你各种方法都试过之后你就会发现已经成为专家了。而我乐于享受这种过程, 挺好玩的。

后来做了第二版,请移步至
计算机视觉识别新增物品笔记二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值