MATLAB -恢复图像的中心子部分

  • 本文关键字:恢复 图像 MATLAB matlab
  • 更新时间 :
  • 英文 :


所以,我有一个512x512扭曲的图像,但是我要做的是恢复图像的一个400x400的中心位置的子部分,而它仍然是扭曲的。我该如何实现这样的东西呢?

我想在for循环中加入一个for循环,比如

for row = 57:457
    for col = 57:457
        %some filter in here
    end
end

但我不太确定下一步该怎么办…

作为一般规则,您可以在MATLAB中使用向量化代替循环来做很多事情。正如在您的问题下面的评论中所讨论的那样,MATLAB中包含了滤波函数,如medfilt2, wiener2imfilter,它们都直接作用于二维图像,而不需要任何循环。

要只恢复图像的中心部分,您可以对整个图像应用过滤器,将结果存储在一个临时变量中,然后将您想要的部分复制到您的失真图像中:

tmpimage = medfilt2(distortedimage);
finalimage = distortedimage;
finalimage(57:456,57:456)=tmpimage(57:456,57:456);

当然,如果你不关心重建过程中的边缘效应,你可以只调用你感兴趣的部分的重建,避免tmpimage:

finalimage = distortedimage;
finalimage(57:456,57:456)=medfilt2(distortedimage(57:456,57:456));

请注意,赋值中的大小需要匹配:你不能赋值finalimage(57:456,57:456)=medfilt2(distortedimage),因为右边的大小产生一个512乘512的矩阵,不适合finalimage的400乘400的中心

最新更新