使用step函数后的Matlab灰度

时间:2014-07-14 11:16:33

标签: matlab rgb grayscale matlab-cvst

我使用步进功能从视频中读取帧(使用vision.VideoFileReader),图像结果是拜耳的一维和三维,问题是我无法从拜耳移动用'去马赛克'功能。 我获得的图像是0-1。

解释更多: 当我显示图像大小时,我获得[1024 1024 3],通常我使用demosaic从拜耳移动到RGB,然后从RGB移动到灰度。 {2D}图像上载有demosaic函数。

代码:

function obj = setupSystemObjects2()

    obj.reader = vision.VideoFileReader(video);
    obj.videoPlayer = vision.VideoPlayer('Position', [20, 400, 700, 400]);

end

function frame = readFrame()

    frame = obj.reader.step();
end

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您所阅读的框架似乎不是拜耳格式,并且不需要demosaic 尝试使用rgb2gray

gImg = rgb2gray( frame );

答案 1 :(得分:1)

据我所知,vision.VideoFileReader,不会给你拜耳格式。它读取标准视频格式,并且您获得大小为[1024 1024 3]的帧的事实表明该帧是RGB。尝试使用imshow显示一个框架,看看它是否有意义。如果它看起来像您期望的那样,那么只需使用rgb2gray,如果您需要转换为灰度。

请注意,您的像素值介于0和1之间。vision.VideoFileReader默认情况下会为您提供类'single'的帧。如果您希望'uint8'帧的范围介于0到255之间,请将'VideoOutputDataType'属性设置为'uint8'

obj.reader = vision.VideoFileReader(video, 'VideoOutputDataType', 'uint8');