【问题标题】:How to merge 2 channel of optical flow grayscale JPG images into one RGB image in Python?如何在 Python 中将 2 通道光流灰度 JPG 图像合并为一张 RGB 图像?
【发布时间】:2019-04-23 08:27:49
【问题描述】:

我正在从给定的 2 个灰度 jpg 图像中制作 RGB 图像,分别用于光流中的 x、y 通道。

sample input images and my current output

def optical_flow(one, two, w, h):
    """
    method taken from (https://chatbotslife.com/autonomous-vehicle-speed-estimation-from-dashboard-cam-ca96c24120e4)
    """
    one_g = cv2.cvtColor(one, cv2.COLOR_RGB2GRAY)
    two_g = cv2.cvtColor(two, cv2.COLOR_RGB2GRAY)
    hsv = np.zeros((w, h, 3))
    # set saturation
    hsv[:,:,1] = cv2.cvtColor(two, cv2.COLOR_RGB2HSV)[:,:,1]
    # obtain dense optical flow paramters
    flow = cv2.calcOpticalFlowFarneback(one_g, two_g, flow=None,
                                        pyr_scale=0.5, levels=1, winsize=15,
                                        iterations=2,
                                        poly_n=5, poly_sigma=1.1, flags=0)
    # convert from cartesian to polar
    mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
    # hue corresponds to direction
    hsv[:,:,0] = ang * (180/ np.pi / 2)
    # value corresponds to magnitude
    hsv[:,:,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
    # convert HSV to int32's
    hsv = np.asarray(hsv, dtype= np.float32)
    rgb_flow = cv2.cvtColor(hsv,cv2.COLOR_HSV2RGB)
    return rgb_flow 

imgu = cv2.imread('u.jpg')
imgv = cv2.imread('v.jpg')
img = optical_flow(one, two, w, h)

Image.fromarray(imgu, 'RGB').show() // top-left one in img
Image.fromarray(imgv, 'RGB').show() // top-right one in img
Image.fromarray(img, 'RGB').show()  // bottom-left one in img

我认为输出图像看起来很奇怪。

【问题讨论】:

    标签: python python-3.x opticalflow


    【解决方案1】:

    光流计算两个连续帧的运动矢量场。在你的情况下onetwo。但是,您的输入图像 u 和 v 不显示连续帧。这里的问题是图像之间没有关系,即没有相似的内容。因此,您的光流场flow 将具有一些随机的类似值。

    在计算光流场的颜色编码可视化时。在您的情况下,饱和通道未正确初始化:

    # set saturation
    hsv[:,:,1] = cv2.cvtColor(two, cv2.COLOR_RGB2HSV)[:,:,1]
    

    设置为255,比较常见的解决办法是设置value通道为255,使用saturation channel对幅度进行编码。

    【讨论】:

      猜你喜欢
      • 2022-08-05
      • 1970-01-01
      • 2012-08-25
      • 2020-10-20
      • 1970-01-01
      • 2019-03-15
      • 2012-03-04
      • 1970-01-01
      相关资源
      最近更新 更多