Я предполагаю, что у вас возникли проблемы с отображением изображений после их добавления. Когда вы используете 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);
Есть ли причина, по которой 'img = img1 + img2' не подходит для вас? –
Не очень знакомы с обработкой изображений, но из документации он выглядит как «imadd» - это просто сложение матрицы, которое усекает любые значения '> 255', которые вы можете сделать вручную после добавления обычной матрицы. – excaza
для улучшения изображения img1 - это оригинальное изображение, а img2 - резкое изображение после определенного процесса. – Mohammad