具体代码用matlab实现通过滤波分离图像的高频和低频,将2张图像的高频和低频合并以创建相关尺度的图像
时间: 2023-06-11 17:07:39 浏览: 56
以下是一个用 MATLAB 实现通过滤波分离图像的高频和低频,并将两张图像的高频和低频合并以创建相关尺度的图像的示例代码:
```matlab
% 读入两张图像
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
% 将图像转为灰度图像
gray_img1 = rgb2gray(img1);
gray_img2 = rgb2gray(img2);
% 定义高通和低通滤波器
lowpass_filter = fspecial('gaussian', [5 5], 2);
highpass_filter = fspecial('laplacian', 0.2);
% 对图像进行滤波
lowfreq_img1 = imfilter(gray_img1, lowpass_filter);
lowfreq_img2 = imfilter(gray_img2, lowpass_filter);
highfreq_img1 = imfilter(gray_img1, highpass_filter);
highfreq_img2 = imfilter(gray_img2, highpass_filter);
% 将两张图像的低频和高频合并
merged_lowfreq = (lowfreq_img1 + lowfreq_img2) / 2;
merged_highfreq = (highfreq_img1 + highfreq_img2) / 2;
% 根据合并的低频和高频创建新的图像
merged_img = merged_lowfreq + merged_highfreq;
% 显示原始图像和合并后的图像
figure;
subplot(2, 3, 1); imshow(img1); title('Image 1');
subplot(2, 3, 2); imshow(img2); title('Image 2');
subplot(2, 3, 3); imshow(merged_img); title('Merged Image');
subplot(2, 3, 4); imshow(lowfreq_img1); title('Low Freq 1');
subplot(2, 3, 5); imshow(lowfreq_img2); title('Low Freq 2');
subplot(2, 3, 6); imshow(highfreq_img1 + highfreq_img2); title('High Freq');
```
在这个示例代码中,我们首先读入两张图像,然后将它们转为灰度图像。接下来,我们定义了一个高通和一个低通滤波器,并使用 `imfilter` 函数对图像进行滤波,分别得到了两张图像的高频和低频。然后,我们将两张图像的低频和高频分别取平均值,得到了一张新的低频和一张新的高频,并将它们相加,得到了最终的合并图像。最后,我们使用 `subplot` 函数将原始图像和合并后的图像显示在一起。