圖像運算是圖像處理中常用的處理方法,它以圖像為單位進行操作,運算的結果是一副新的圖像,常常用于圖像的高級處理(如圖像分割,目標的檢測和識別等)的前期處理。具體的圖像運算包括點運算,代數運算,幾何運算和鄰域運算。點運算常用于改變圖像的灰度范圍及分布,從而改善圖像的效果,代數運算常用于醫學圖像的處理以及圖像誤差檢測,幾何運算在圖像配準,校正等方面有重要用途,鄰域運算主要用在圖像濾波和形態學運算方面。
在中,數字圖像的數據是以矩陣形式存放的,矩陣的每一個元素值對應著一個像素點的像素值,這樣一來,對圖像的運算就相當于對數據矩陣進行運算。下面用的具體圖像運算實例進行介紹:
一.圖像的線性點運算
在圖像處理中,點運算是一種簡單而又很重要的技術,對于一副輸入圖像,若輸出圖像的每個像素點的灰度值由輸入像素點決定,則這樣的圖像變換就成為圖像的點運算,舉個例子:
A = imread('1.jpg'); %括號內為圖像的輸入具體路徑
figure(1); %圖像顯示窗口
imshow(A); %輸出圖像A
B = A +50; %A圖像的灰度值增加50,成為新的圖像B
figure(2);
imshow(B); %輸出圖像B
C= 1.5 * A; %A圖像的對比度增強,成為新的圖像C
figure(3);
imshow(C); %輸出圖像C
D = 0.8 * A; %圖像對比度減弱,成為新的圖像D

figure(4);
imshow(D); %輸出圖像D
E = -double(A) + 255; %對圖像A進行求補,但要注意先把A的類型轉化為double型,
實際是E = -1 * A + 255;
figure(5);
imshow(uint8(E)); %輸出時注意將圖像轉為原來的 uint8 類型
圖像的代數運算:
二.圖像的代數運算
圖像的代數運算是指對兩幅或兩幅以上的輸入圖像進行加減乘除四則運算,它在圖像處理中有著廣泛的應用,加法運算可以用來降低圖像中的隨機噪聲,減法運算可以用來減去背景,運動背景,進行梯度幅度運算數字圖像處理應用的例子,乘法運算通常用來進行掩模運算,除法運算可以用來歸一化。
1.圖像加法運算
注意進行加法運算的兩幅圖像的大小要一致。
a=imread('a.jpg');
d=rgb2gray(a);

subplot(2,2,1);
imshow(d)
b=imread('b.jpeg');
e=rgb2gray(b);
subplot(2,2,2);
imshow(e)
c=imadd(d,e,'uint8'); %將兩幅圖像進行相加得到新的圖像,注意數據類型
subplot(2,2,3);
imshow(c)
上面就是效果圖。
相信大家都能舉一反三數字圖像處理應用的例子,后面的減法,乘法和除法就只寫基本的語法和核心的函數,效果大家可以自己在上觀察。
2.圖像減法運算
A = imread('1.jpg');
B = imread('2.jpg');
C = imsubtract(A,B); %將A,B兩幅圖像進行相減得到新的圖像C
3.圖像乘法運算
A = imread('1.jpg');
B = imread('2.jpg');
C = immultiply(A,B); %將A,B兩幅圖像進行相乘得到新的圖像C
4.圖像除法運算
A = imread('1.jpg');
B = imread('2.jpg');
C = imdivide(A,B); %將A,B兩幅圖像進行相除得到新的圖像C
三.圖像的幾何變換
為了達到某種視覺效果,變換輸入圖像的像素位置,通過把輸入圖像的像素位置映射到一個新的位置達到改變原圖像的顯示效果的目的,這一過程成為圖像的幾何運算,圖像的幾何運算主要是指對圖像進行幾何校正,空間變換(縮放,旋轉,仿射變換)等運算過程。
對下面的一副圖片分別進行,平移,旋轉,縮放操作
1.導入原圖像
img1=imread('a.jpg');
img1=rgb2gray(img1);
subplot(2,2,1);
imshow(img1);
imwrite(img1,'a1.jpg');
2.平移,這里要了解一下函數,例如:
= (,v)
返回將 平移 v 之后得到的 對象。vv的第一個元素指定 x 方向上的平移距離,第二個元素指定 y 方向上的平移距離。
se=translate(strel(1),[20 20]); %將一個平面結構化元素分別向下和向右移動20個位置
img2=imdilate(img1,se); %利用膨脹函數平移圖像
subplot(2,2,2);

imshow(img2);
imwrite(img2,'a2.jpg');
3.旋轉
img3=imrotate(img1,90); %逆時針旋轉90度
subplot(2,2,3);
imshow(img3);
imwrite(img3,'a3.jpg');
4.縮放
img4=imresize(img1,2); %放大兩倍
subplot(2,2,4);
imshow(img4);
imwrite(img4,'a4.jpg');
5.效果圖
依次是原圖,平移后的圖像,旋轉后的圖像,放大后的圖像(由于顯示方式的原因,這里看不出放大)