2015-11-19 2 views
-1

Как добавить две матрицы, один из сложных двухместных, а другой - только удваивается, используя функцию imadd в Matlab?Добавление двух изображений с различными типами с imadd функцией Matlab

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

Есть ли причина, по которой 'img = img1 + img2' не подходит для вас? –

+1

Не очень знакомы с обработкой изображений, но из документации он выглядит как «imadd» - это просто сложение матрицы, которое усекает любые значения '> 255', которые вы можете сделать вручную после добавления обычной матрицы. – excaza

+0

для улучшения изображения img1 - это оригинальное изображение, а img2 - резкое изображение после определенного процесса. – Mohammad

ответ

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); 
+0

Мы не ответили, потому что одно из изображений является комплекснозначным. Добавление реального изображения и «сложного» изображения на самом деле не имеет смысла, поэтому мы просили OP выше в потоке комментариев. Это, как говорится, то, что вы сказали, совершенно верно ... учитывая, что оба изображения одного типа. – rayryeng

+0

Вы правы. Я прочитал его как img1 __AND__ img2 были сложными двойными. Я подумал, что он просто работал в домене Фурье. – andrew

+0

О, конечно. Если бы оба были сложными, то это все равно работало бы ... оба они не одного и того же типа, и все это нас очень смутило. – rayryeng