【问题标题】:Read video with transparent background into matlab将透明背景的视频读入matlab
【发布时间】:2018-01-25 16:19:20
【问题描述】:

我正在寻找一种将带有透明蒙版的视频加载到 Matlab 中的方法(例如:具有透明背景的 Quicktime MOV PNG 格式)。我需要为我读取的每一帧获取图像和透明度蒙版。

这是处理图像的方法:[A,map,transparency] = imread(___)。 用视频怎么做?

谢谢

【问题讨论】:

    标签: matlab video video-processing


    【解决方案1】:

    透明度由 RGBA 中的 alpha 通道 和 TGA / TARGA (https://en.wikipedia.org/wiki/Alpha_compositing#Other_transparency_methods) 中的位处理

    RGBA 是 32 位的,因此是一个 (m x n x 4 )-矩阵,其中 m,nwidthheight 图像帧

    所以不能使用像 video = readFrame(v,'native') 这样的任何工具,因为它们返回 (m x n x 3)-matrix (RGB24)

    基于.png.tiff 的视频支持Alpha 通道(https://www.digitalrebellion.com/blog/posts/list_of_video_formats_supporting_alpha_channels

    所以最简单的解决方案可能是使用 Psychtoolbox(基于mex)中的CreateMovie,它能够从 RGBA 32 位图像创建电影:

    'numChannels' 可选的要编码的图像通道数:可以是 1、3 或 4 个在 OpenGL 图形硬件上,3 或 4 个在 OpenGL-ES 硬件上。 1 = 仅红色/灰度通道,3 = RGB,4 = RGBA。请注意,并非所有视频编解码器都可以编码纯 1 通道数据或 RGBA 数据,即。一个 阿尔法通道。

    来源:http://docs.psychtoolbox.org/CreateMovie

    matlab 中有用于 RGBA 图像处理的函数,但是它们不能与 matlab 中的标准视频函数结合使用,因为它们不支持 RGBA 视频(.avi.jpeg,...没有 alpha 通道), 参见https://de.mathworks.com/help/matlab/ref/tiff.readrgbaimage.html

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多