Read video with transparent background into matlab

时间:2018-01-25 16:19:21

标签: matlab video video-processing

I'm looking for a way to load video with transparency mask into Matlab (example: Quicktime MOV PNG Format with a transparent background). I need to get the image and transparency mask for every frame I read.

This is the way to do it with images: [A,map,transparency] = imread(___). What is the way to do it with video?

Thanks

1 个答案:

答案 0 :(得分:1)

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

RGBA是32位,所以(mxnx 4) - 矩阵,其中 m,n 宽度高度< / em>图像框架

所以任何像video = readFrame(v,'native')这样的工具都无法使用,因为它们会返回(m x n x 3) - 矩阵(RGB24)

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

所以最简单的解决方案可能会使用来自 Psychtoolbox CreateMovie - )的mex能够从RGBA 32位图像创建电影:

  

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

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

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