将两个图像融合matlab代码
时间: 2023-10-05 15:06:27 浏览: 37
以下是一个简单的 MATLAB 代码,用于将两个图像融合:
```
% 读取两个图像
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
% 将两个图像分别转换为灰度图像
gray1 = rgb2gray(img1);
gray2 = rgb2gray(img2);
% 将两个灰度图像进行融合
alpha = 0.5; % 调整融合比例
fused = alpha * double(gray1) + (1 - alpha) * double(gray2);
fused = uint8(fused);
% 显示融合后的图像
figure;
imshow(fused);
```
在上面的代码中,我们首先读取了两个图像,然后将它们分别转换为灰度图像。接下来,我们将两个灰度图像进行融合,这里使用了一个简单的加权平均的方法。最后,我们将融合后的图像显示出来。需要注意的是,融合比例 `alpha` 可以根据具体情况进行调整。
相关问题
医学图像融合matlab代码
医学图像融合是指将来自不同模态或不同角度的医学图像进行融合,以提高图像质量、增加信息量和准确度。下面是一个简单的医学图像融合的MATLAB代码示例:
1. 导入两个医学图像m1和m2:
m1 = imread('medical_image1.jpg');
m2 = imread('medical_image2.jpg');
2. 将图像进行预处理,如灰度化和归一化:
m1_gray = rgb2gray(m1);
m2_gray = rgb2gray(m2);
m1_norm = double(m1_gray)/255;
m2_norm = double(m2_gray)/255;
3. 对两个图像进行尺寸调整,使它们具有相同的大小:
[m1_rows, m1_cols] = size(m1_norm);
m2_resized = imresize(m2_norm, [m1_rows, m1_cols]);
4. 融合图像,可以使用简单的平均法:
fusion_image = (m1_norm + m2_resized)/2;
5. 调整融合后图像的范围:
fusion_image = uint8(fusion_image * 255);
6. 显示融合后的图像:
imshow(fusion_image);
title('Fusion Result');
这个示例代码实现了基于简单平均法的医学图像融合。你也可以尝试其他的图像融合算法,如小波变换、多尺度变换等,以进一步改善图像融合的效果。请注意,具体的医学图像融合方法和代码实现可能因不同应用场景和需求而有所不同。
离散小波变换图像融合MATLAB代码
以下是一个使用MATLAB实现离散小波变换(DWT)图像融合的示例代码:
```matlab
% 读取两张待融合的图像
image1 = imread('image1.jpg');
image2 = imread('image2.jpg');
% 将图像转换为灰度图像
grayImage1 = rgb2gray(image1);
grayImage2 = rgb2gray(image2);
% 对两张灰度图像执行离散小波变换
[coefficients1, ~] = wavedec2(grayImage1, 2, 'db4');
[coefficients2, ~] = wavedec2(grayImage2, 2, 'db4');
% 将低频系数与高频系数分开
cA1 = appcoef2(coefficients1, [], 'db4', 2);
[cH1, cV1, cD1] = detcoef2('all', coefficients1, 2);
cA2 = appcoef2(coefficients2, [], 'db4', 2);
[cH2, cV2, cD2] = detcoef2('all', coefficients2, 2);
% 对低频系数执行融合
fusedCA = (cA1 + cA2) / 2;
% 对高频系数执行融合
fusedCH = max(cH1, cH2);
fusedCV = max(cV1, cV2);
fusedCD = max(cD1, cD2);
% 重构融合后的图像
fusedCoefficients = [fusedCA; fusedCH, fusedCV, fusedCD];
fusedImage = waverec2(fusedCoefficients, 'db4');
% 显示融合后的图像
figure;
subplot(1, 3, 1); imshow(grayImage1); title('Image 1');
subplot(1, 3, 2); imshow(grayImage2); title('Image 2');
subplot(1, 3, 3); imshow(uint8(fusedImage)); title('Fused Image');
```
请确保已将图像文件命名为`image1.jpg`和`image2.jpg`,并且这两张图像位于MATLAB当前工作目录下。
这个示例代码使用了`db4`小波作为离散小波变换的基函数。你可以根据需要选择其他小波基函数。代码中还使用了二级分解,你也可以根据需要更改分解的级数。
希望这个示例代码对你有所帮助!如有任何问题,请随时提问。