圖像的代數運算


圖像的代數運算是兩幅輸入圖像之間進行的點對點的加、減、乘、除運算后得到輸出圖像的過程。

 

一、圖像的加法運算

圖像相加一般用於對同一場景的多幅圖像求平均效果,以便有效地降低具有疊加性質的隨機噪聲。

代碼如下:

clear all;
close all;
I1 = imread('flower1.jpg');
I2 = imread('flower2.jpg');
I3 = imadd(I1, I2);                                             %圖像的加法運算   
subplot(2, 2, 1), imshow(I1), title('原始圖像1');
subplot(2, 2, 2), imshow(I2), title('原始圖像2');
subplot(2, 2, 3), imshow(I3), title('處理后的圖象');

處理后的圖像顯示如下:

 兩幅圖像的像素值相加時,產生的結果很可能超過圖像數據類型所支持的最大值,尤其對於uint8類型的圖像,溢出的情況最為常見。當數據值發生溢出時,imadd函數將數據截取為數據類型所支持的最大值,這種截取效果稱之為飽和。為了避免出現飽和現象,在進行加法計算前,最好將圖像轉換為一種數據范圍較寬的數據類型。

二、圖像的減法運算

圖像減法也稱為差分方法,是一種常用於檢測圖像變化及運動物體的圖像處理方法。

代碼如下

clear all;
close all;
rice = imread('rice.jpg');
background = imerode(rice, strel('disk', 15));                      %生成背景亮度圖像
rice2 = imsubtract(rice, background);
subplot(1, 2, 1), imshow(rice), title('原始圖像');
subplot(1, 2, 2), imshow(rice2), title('處理后的圖像');

 處理后的圖象顯示如下:

三、圖像的乘法運算

 兩幅圖像進行乘法運算可以實現掩模操作,即屏蔽掉圖像的某些部分。一幅圖像乘以一個常數通常被稱為縮放,這是一種常見的圖象處理操作。縮放通常將產生比簡單添加像素偏移量自然得多的明暗效果,這是因為這種操作能夠更好的維持圖像的相關對比度。

代碼如下:

clear all;
close all;
moon = imread('moon.jpg');
moon2 = immultiply(moon, 2);
subplot(1, 2, 1), imshow(moon), title('原始圖像');
subplot(1, 2, 2), imshow(moon2), title('處理后的圖像');

處理后的圖像顯示如下:

四、圖像的除法運算

 除法運算可用於校正成像設備的非線性影響,這在特殊形態的圖象(如斷層掃描等醫學圖像)處理中常常用到。圖像除法也可以用來檢測兩幅圖像間的區別,但是除法操作給出的是相應像素值的變化比率,而不是每個像素的絕對差異,因而圖像除法也成為比率變換。

代碼如下:

clear all;
close all;
I = imread('rice.jpg');
I2 = double(I);
J = double(I2 * 0.43 + 90);
K = imdivide(I2, J);
subplot(1, 2, 1), imshow(I), title('I');
subplot(1, 2, 2), imshow(K), title('K');

處理后的圖像顯示如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM