MATLAB 中使用 subplot 函数显示图像的常见问题:三个图像的疑惑

本文将解释在使用 MATLAB 的 subplot 函数显示多个图像时,为什么可能会出现三个图像窗口,以及如何解决这个问题。

问题描述

你可能在使用 subplot 函数显示两个图像时,发现出现了三个图像窗口,这与你预期的结果不符。

原因分析

实际上,subplot 函数不是用来创建多个图像窗口的,而是用来在一个图像窗口中创建多个子图。在你的代码中,subplot(1, 2, 1) 表示在一个 1x2 的子图中,将第一个子图作为当前子图。同样,subplot(1, 2, 2) 表示将第二个子图作为当前子图。

如果在运行你的代码后看到了三个图像,原因可能是之前的图像窗口没有关闭。

解决方法

你可以尝试以下方法解决这个问题:

  1. 在运行代码前关闭所有打开的图像窗口。
  2. 使用 close all 命令来关闭所有图像窗口。

修正后的代码

以下是修正后的代码,同时也加上了 close all 命令:

% 加载图像
img = imread('image.jpg');

% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.02);

% 获取图像尺寸
[rows, cols] = size(noisy_img);

% 初始化结果图像
filtered_img = uint8(zeros(rows, cols));

% 中值滤波
for i = 2 : rows-1
    for j = 2 : cols-1
        % 取 3x3 窗口内的像素值
        window = noisy_img(i-1:i+1, j-1:j+1);
        
        % 对窗口内的像素值进行排序,并取中间值
        median_val = median(window(:));
        
        % 更新滤波后的像素值
        filtered_img(i, j) = median_val;
    end
end

% 关闭所有图像窗口
close all;

% 显示原始图像和滤波后的图像
figure;
subplot(1, 2, 1);
imshow(noisy_img);
title('加噪图像');
subplot(1, 2, 2);
imshow(filtered_img);
title('中值滤波结果');

总结

使用 subplot 函数时,请确保之前的图像窗口已经关闭,否则可能会出现多个图像窗口。你可以通过关闭所有打开的窗口或使用 close all 命令来解决这个问题。


原文地址: https://www.cveoy.top/t/topic/bCuK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录