亲宝软件园·资讯

展开

2019年11月22日开发手记

巫师笔记 人气:1

开始考虑使用滤波函数,在使用了几个常用的滤波函数后,发现无论是速度还是时间都无法令人满意,于是决定自己写一个。

首先做一个两行的mask掩膜,第一行为0,第二行的前10与后10行为1,在两张图片进入fttmove函数后进行行分割,对分割后的行进行组合并傅里叶变换,将掩膜与该数组相乘,得到低通滤波后的图像,将该图像逆傅里叶变换得到能量图。

再做一个与图像同大小的iimg掩膜,使用np.astype将图像中的点都转化为整型并储存在iimg中,设置一个滤波阈值lvValue,当有元素<lvValue时,将其替换为0,当有元素>255-lvValue时,将其替换为0。使用np.convolve对iimg做卷积运算。最后的得到的动态滤波效果为:


对其提取轮廓画矩形:

得到效果如图所示。
现在处理的效果已经基本满意,接下来就要提取外轮廓,然后准备用Linux进行交叉编译上机了。
想到写手记的时候图像处理阶段其实已经差不多成型了,看看以后有没有时间再来发个总结。下一个阶段就是要进行目标识别以及跟踪了,要用到机器学习的内容。现在的想法就是先大体上搭一个BP神经网络然后疯狂调参,后面要用到什么就现学,嗯,大体上就这样吧,争取本周把图像处理部分搞定,然后再说然后的事。

滤波代码:
def fttmove(frame1, frame2):
    index = 0
    for i in range(0,High,SteppingH):
        new_gray_array[0,:] = frame1[i,::SteppingW]
        new_gray_array[1,:] = frame2[i,::SteppingW]

        f = np.fft.fft2(new_gray_array)

        f = f * mask

        ifft2line = np.fft.ifft2(f)

        iimg[index,:] = ifft2line.astype(np.int)[1,:] #np.astype将图像转换为整型
        iimg[index,:][iimg[index,:] > 255 - lvValue] = 0     #有元素> lvvaule替换为值x:
        iimg[index,:][iimg[index, :] < lvValue] = 0   #有元素<lvValue将其替换为0
        iimg[index,:] = np.convolve( iimg[index,:], conMask, mode='same')  #numpy函数中的卷积函数库
        # print('iimg_arry=' + str(iimg[index,:]))
        # start2 = time.clock()
        # print('Time2:%s' % (start2 - start1))
        index = index + 1
    return iimg

 

 


 

加载全部内容

相关教程
猜你喜欢
用户评论