如何使用Matlab中的imadd
函数添加两个矩阵,一个是复数双精度数,另一个是双精度数?
%tpye of img1 is double and img2 is complex double
img=imadd(img1,img2);
答案 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);