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
答案 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