Image 在MATLAB中播放图像序列

Image 在MATLAB中播放图像序列,image,matlab,user-interface,video,sequence,Image,Matlab,User Interface,Video,Sequence,向你们大家问好 我有一个令人沮丧的问题,希望你能帮我解决 我正在MATLAB中开发一个人体跟踪系统,并希望在一个吸引人的GUI中显示结果(也在MATLAB中使用指南) 在这个主窗口中,大约2500幅大小为320x240的灰度图像的图像序列将像视频一样播放,但在其中可以很好地勾勒出人类的轮廓 挑战是,;这些图像在显示在窗口之前需要一点处理(检测人类轮廓) 现在,是否可以在显示一组图像的同时,对随后要显示的另一组图像进行一些处理 我非常希望它能像普通视频一样播放,但我想这会有点雄心勃勃。下面是一个示

向你们大家问好

我有一个令人沮丧的问题,希望你能帮我解决

我正在MATLAB中开发一个人体跟踪系统,并希望在一个吸引人的GUI中显示结果(也在MATLAB中使用指南)

在这个主窗口中,大约2500幅大小为320x240的灰度图像的图像序列将像视频一样播放,但在其中可以很好地勾勒出人类的轮廓

挑战是,;这些图像在显示在窗口之前需要一点处理(检测人类轮廓)

现在,是否可以在显示一组图像的同时,对随后要显示的另一组图像进行一些处理


我非常希望它能像普通视频一样播放,但我想这会有点雄心勃勃。

下面是一个示例,展示了与您描述的类似的场景。这是根据我在评论中提到的内容改编的

function ImgSeqDemo()
    figure()
    for i=1:10
        %# read image
        img = imread( sprintf('AT3_1m4_%02d.tif',i) );

        %# process image to extract some object of interest
        [BW,rect] = detectLargestCell(img);

        %# show image
        imshow(img), hold on

        %# overlay mask in red color showing object
        RGB = cat(3, BW.*255, zeros(size(BW),'uint8'), zeros(size(BW),'uint8'));
        hImg = imshow(RGB); set(hImg, 'AlphaData',0.5);

        %# show bounding rectangle
        rectangle('Position', rect, 'EdgeColor','g');
        hold off

        drawnow
    end
end
下面是上面使用的处理函数。在您的情况下,您可以插入算法:

function [BW,rect] = detectLargestCell(I)
    %# OUTPUT
    %#    BW    binary mask of largest detected cell
    %#    rect  bounding box of largest detected cell

    %# find components
    [~, threshold] = edge(I, 'sobel');
    BW = edge(I,'sobel', threshold*0.5);
    se90 = strel('line', 3, 90);
    se0 = strel('line', 3, 0);
    BW = imdilate(BW, [se90 se0]);
    BW = imclearborder(BW, 4);
    BW = bwareaopen(BW, 200);
    BW = bwmorph(BW, 'close');
    BW = imfill(BW, 'holes');

    %# keep largest component
    CC = bwconncomp(BW);
    stats = regionprops(CC, {'Area','BoundingBox'});
    [~,idx] = max([stats.Area]);
    rect = stats(idx).BoundingBox;
    BW(:) = 0;
    BW(CC.PixelIdxList{idx}) = 1;
end

只是一个想法:如何进行处理,并捕获每个图像的结果。然后以近乎实时的方式将整个过程播放成电影。@Amro嘿,很高兴再次收到你的来信。正如我所说,共有2500张图像,处理每一张图像将花费大量时间,而且显示结果也为时已晚。但如果找不到其他解决方案,这将是最后的手段。不,我的意思是浏览所有图像,不显示任何内容,只存储处理结果。完成后,您可以像电影一样逐个显示生成的图像(您甚至可以将其保存为实际视频文件)。IPT工具箱中有一个演示,展示了该概念: