【问题标题】:crop an image according to what is different between 2 images根据两张图像之间的差异裁剪图像
【发布时间】:2014-06-13 05:36:29
【问题描述】:

我有不同的图像,我想裁剪它们并只保留两者之间的不同之处。这是我到目前为止的代码。

video = VideoReader('frames.avi', 'Tag', 'my reader object');
frameFirst = read(video,1);
frameSecond = read(video, video.NumberOfFrames-1 );
imshowpair (frameSecond,frameFirst);
pause();

【问题讨论】:

  • 预期输出是什么?精确识别差异的矩形图像或掩码?
  • 一个矩形图像。事实上,我正在录制一个矩形部分正在变化的屏幕电影

标签: matlab crop


【解决方案1】:

嗯,如果没有更多细节,很难给你一个好的答案。我想我理解你想要做什么,这可能会让你朝着正确的方向前进。此代码按行和列遍历图像的每个像素(每个像素包含一个 1x3 的 RGB 数据向量,范围从 0 到 1)。如果 1x3 RGB 矢量的任何元素的差异超过某个阈值(在本例中,设置为 0.1),我们将整个像素设为黑色(将其设置为 [0 0 0])。否则,无论最后一帧是什么,我们都渴望让它成为现实。要过滤除那些相同的像素以外的所有像素,请将阈值设置为 0。如下所示:

thresh = 0.1
for ii = 1:size(frameFirst, 1)
    for jj = 1:size(frameFirst, 2)
        pixDiff = frameFirst{ii, jj} - frameSecond{ii, jj}
        if (pixDiff(1) > thresh || pixDiff(2) > thresh || pixDiff(3) > thresh)
            outputFrame = frameSecond{ii, jj};
        else
            outputFrame = [0 0 0];
        end
    end
end

我希望这能满足您的需求。祝你好运!

编辑 1:好的,我了解您现在要查找的内容。您需要拥有右下角和左上角的索引。如果您已经有了这些,只需执行以下操作:frameOut = frameIn(xStart:xStop, yStart, yStop。如果您需要找到这些点,那就更难了。告诉我,我会帮助您解决。

【讨论】:

  • 不,我不想让像素等于黑色,而是想将图像裁剪到物体移动的矩形屏幕上。
  • scoolgambach.bl.ee/screenshots.html 这是 imshowpair 结果的图片。我只想保留绿色和粉红色的部分
猜你喜欢
  • 2013-06-18
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多