微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连续图像上的生长区域算法

如何解决连续图像上的生长区域算法

我正在尝试使用 Python 和 OpenCV 在 RaspBerry 上制作车道保持算法。我使用以下管道 Image(RGB)(resolution 320x240) -> Image (Gray) -> Region Growing algorithm -> Canny Edges -> Cropping the ROI -> houghlinesp -> 根据线的斜率计算转向角。

我最近刚刚在流水线中添加了区域增长算法,从那时起,单个图像的处理时间增加了 4 秒,汽车只是等待指令的时间,看起来对汽车来说真的很糟糕去懒惰。但是将算法添加到管道中使汽车做出正确的决定,所以我无法删除它。

如何使处理速度更快?

    def get_gray_diff(self,img,currentPoint,tmpPoint):
        aux1 = int(img[currentPoint.x,currentPoint.y])
        aux2 = int(img[tmpPoint.x,tmpPoint.y])
        aux3 = abs(aux1 - aux2)
        return aux3

    def select_connects(self,p):
        if p != 0:
            connects = [Point(-1,-1),Point(0,Point(1,0),1),Point(-1,0)]
        else:
            connects = [Point(0,0)]
        return connects


    def region_grow(self,frame):
        seeds = [Point(230,160)]
        thresh = 6
        p = 1
        height,weight = frame.shape
        seedMark = np.zeros(frame.shape)
        seedList = []
        for seed in seeds:
            seedList.append(seed)
        label = 1
        connects = self.select_connects(p)
        while len(seedList)>0:
            currentPoint = seedList.pop(0)
            seedMark[currentPoint.x,currentPoint.y] = label
            for i in range(8):
                tmpX = currentPoint.x + connects[i].x
                tmpY = currentPoint.y + connects[i].y
                if tmpX < 0 or tmpY < 0 or tmpX >= height or tmpY >= weight:
                    continue
                grayDiff = self.get_gray_diff(frame,Point(tmpX,tmpY))
                if grayDiff < thresh and seedMark[tmpX,tmpY] == 0:
                    seedMark[tmpX,tmpY] = label
                    seedList.append(Point(tmpX,tmpY))
        return seedMark

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。