【发布时间】:2018-01-25 16:19:20
【问题描述】:
我正在寻找一种将带有透明蒙版的视频加载到 Matlab 中的方法(例如:具有透明背景的 Quicktime MOV PNG 格式)。我需要为我读取的每一帧获取图像和透明度蒙版。
这是处理图像的方法:[A,map,transparency] = imread(___)。 用视频怎么做?
谢谢
【问题讨论】:
标签: matlab video video-processing
我正在寻找一种将带有透明蒙版的视频加载到 Matlab 中的方法(例如:具有透明背景的 Quicktime MOV PNG 格式)。我需要为我读取的每一帧获取图像和透明度蒙版。
这是处理图像的方法:[A,map,transparency] = imread(___)。 用视频怎么做?
谢谢
【问题讨论】:
标签: matlab video video-processing
透明度由 RGBA 中的 alpha 通道 和 TGA / TARGA (https://en.wikipedia.org/wiki/Alpha_compositing#Other_transparency_methods) 中的位处理
RGBA 是 32 位的,因此是一个 (m x n x 4 )-矩阵,其中 m,n 是 width 和 height 图像帧
所以不能使用像 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
【讨论】: