zoukankan      html  css  js  c++  java
  • 2019年11月25日开发手记

    对滤波后的图像做行列投影,通过阈值得到运动图像横纵坐标点集。使用水平与竖直投影算法,投影算法的时间复杂度为O(x2),哪怕进行优化也最多可变为O(xlogx),时间上无法接受。再次使用傅里叶变换?还是将目标放在轮廓点整合?

    使用竖直投影法的话还不如直接遍历所有点找轮廓,这对后面进行聚类也比较方便。

    决定采用竖直投影+遍历,只进行一次投影,在投影过程中将点逐个遍历,高亮点的横纵坐标压入栈,输出横纵坐标的最大值和最小值。

    def line_trans(img):
        l = Stack()
        h_1= Stack()
        l.isEmpty()
        h_1.isEmpty()
        #ret, thresh1 = cv2.threshold(img, 25, 255, cv2.THRESH_BINARY)  # 将图片进行二值化(130,255)之间的点均变为255(背景)
        (h, w) = img.shape  # 返回高和宽
        a = [0 for z in range(0, w)]
        # 记录每一列的波峰
    
        for j in range(0, w):  # 遍历一列
            q_1=0
            for i in range(0, h):  # 遍历一行
                #print(1)
                #print(img[i, j])
                if img[i, j] !=0:  # 如果该点为白点
                    print(1)
                    if q_1 ==0:
                        i_1=i
                    i_2=i
                    q_1=1
                    a[j] += 1  # 该列的计数器加一计数
            if q_1!=0:
                l.push(j)
                h_1.push(i_1)
                h_1.push(i_2)
          if len(h_1.stack) != 0 and len(l.stack) != 0:
              max=h_1.stack[0]
              min=h_1.stack[0]
              for i in range(len(h_1.stack)):
                  if h_1.stack[i]>max:
                      max=h_1.stack[i]
                  if h_1.stack[i]<min:
                      min=h_1.stack[i]
              return min,l.stack[0],max,l.stack[len(l.stack)-1]
          else:
              return 0,0,0,0
    问题:似乎进不去判断函数,也就是img中所有点都为0,但在调试中img确有非0点。
    问题解决:缩进错误
     新算法的效果确实变得更好了,但速度也变得更慢了,为80ms左右。尝试使用python的切片操作,对二维数组进行横向累加,从而达到减少迭代次数的目的。
    在滤波函数中加上一句:iimg[index,:][iimg[index, :] > 200] = 0 似乎出现了一个新特点:运动的物体在运动的反方向一侧的边缘会出现高亮。
    换而言之,图像出现了方向性,这对后面的分类与识别应该有些特殊的意义。
  • 相关阅读:
    网络测量中基于Sketch方法的简单介绍
    Reading SBAR SDN flow-Based monitoring and Application Recognition
    Reading Meticulous Measurement of Control Packets in SDN
    Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
    ovs加dpdk在日志中查看更多运行细节的方法
    后缀数组
    (转载)LCA问题的Tarjan算法
    Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
    Vijos 1816统计数字(计数排序)
    卡特兰数
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/11931826.html
Copyright © 2011-2022 走看看