使用Matlab的imadd函数添加两个不同类型的图像

时间:2015-11-19 18:05:27

标签: matlab double add complex-data-types

如何使用Matlab中的imadd函数添加两个矩阵,一个是复数双精度数,另一个是双精度数?

%tpye of img1 is double and img2 is complex double
img=imadd(img1,img2);

1 个答案:

答案 0 :(得分:0)

我猜你在将图像添加到一起后显示出来时遇到了问题。当你使用imshow(img)时,matlab总是会看到img的类型,当它看到它是一个双精度时它会映射0=black 1>=white,所以很多信息都会被剪裁。

将图像添加到一起后,您应该再次缩放它们,使值介于0和1之间。这是一个将数组规范化的函数

function normalized_arr = NormalizeArray(inp_arr)
% normalized_im = NormalizeArray(inp_arr) takes an input array of any size
%       and normalizes all the values so the result is an array with all
%       values between 0 and 1 inclusive

    %finds the smallest value in the current array
    min_val = min(inp_arr(:));

    %finds the largest value in the current array
    max_val = max(inp_arr(:));

    %finds the scale factor so that all values are between 0 and 1
    scale_factor = 1 / (max_val - min_val);

    %removes offset from image, so the minimum value will be 0
    normalized_arr = inp_arr - min_val;

    %normalization
    normalized_arr = normalized_arr .* scale_factor;
end    

你可以在你的代码中使用它,就像这样

img = img1+img2;
norm_img = NormalizeArray(img);
imshow(norm_img);