圖像的代數(shù)運(yùn)算
- 實(shí)驗(yàn)?zāi)康模?/li>
1.了解圖像的算術(shù)運(yùn)算在數(shù)字圖像處理中的初步應(yīng)用。
2.體會(huì)圖像算術(shù)運(yùn)算處理的過(guò)程和處理前后圖像的變化。
3.能夠?qū)崿F(xiàn)簡(jiǎn)單的圖像處理
-
實(shí)驗(yàn)原理:
圖像的代數(shù)運(yùn)算包括加,減,乘,除,這些運(yùn)算的主要對(duì)象是圖像數(shù)據(jù)塊中的數(shù)據(jù)。這四種代數(shù)運(yùn)算可以由如下的公式表示:
C(x,y) = A(x,y) + B(x,y)
C(x,y) = A(x,y) - B(x,y)
C(x,y) = A(x,y) * B(x,y)
C(x,y) = A(x,y) / B(x,y)
其中A(x,y),B(x,y),C(x,y)分別是參與運(yùn)算的圖像數(shù)據(jù)塊。
在MATLAB中,由于圖像的數(shù)據(jù)實(shí)際上是以矩陣的形式存儲(chǔ)的,故可以直接使用MATLAB的基本算術(shù)符(+、-、*、/
等),但是在此之前必須將圖像轉(zhuǎn)換為適合進(jìn)行基本操作的雙精度類型。但是MATLAB圖像處理工具箱包含了一個(gè)能夠?qū)崿F(xiàn)所有非稀疏數(shù)值數(shù)據(jù)的算術(shù)操作的函數(shù)集合,能夠更加方便地對(duì)圖像進(jìn)行算數(shù)操作。下表列舉了所有圖像處理工具箱中的圖像代數(shù)運(yùn)算函數(shù)。
表1 圖像處理工具箱中的代數(shù)運(yùn)算函數(shù)
函數(shù)名 功能描述
Imabsdiff 兩幅圖像的絕對(duì)差值
Imadd 兩幅圖像的加法
Imcomplement 補(bǔ)足一幅圖像
Imdivide 兩幅圖像的除法
Imlincomb 計(jì)算兩幅圖像的線性組合
Immultiply 兩幅圖像的乘法
imsubtract 兩幅圖像的減法
在使用上述工具箱時(shí),我們不再需要考慮直接數(shù)據(jù)的類型,也無(wú)需考慮直接算數(shù)計(jì)算得出的值會(huì)超出圖像的位數(shù)。但圖像的算數(shù)計(jì)算需要參與計(jì)算的圖像的數(shù)據(jù)塊大小相等。
- 實(shí)驗(yàn)步驟:
<!-- -->
-
圖像的加法:
圖像相加一般用于對(duì)同一場(chǎng)景的多幅圖像求平均效果,以便有效地降低具有疊加性質(zhì)的隨機(jī)噪聲。
為了體驗(yàn)加法,我們分別進(jìn)行了如下的兩個(gè)操作:兩幅圖像相加;單幅圖像的數(shù)據(jù)整體加上某一個(gè)數(shù)值,以增加亮度。
代碼如下:
clc;
close ;
clear;
path=“E:\文件資料\課程課件及相關(guān)資料\圖像處理\作業(yè)\第二次作業(yè)”;
%%
%兩幅圖片相加
car1 = imread(‘car1.jpg’);
car2= imread(‘car2.jpg’);
K = imadd(car1,car2);
imshow(K);
exportgraphics(gca,path+“\add.jpg”)
討論:可見(jiàn)圖像的加法會(huì)使得兩幅圖像重合在一起,上述兩幅圖片差異較大,所在兩幅圖片疊加時(shí),會(huì)產(chǎn)生較為模糊的圖片。當(dāng)兩幅圖片的背景差不多時(shí),所得到的圖像會(huì)更加清晰。圖像的加法可以用于水印的處理上。
給圖像的每一個(gè)像素加上一個(gè)常數(shù)可以使圖像的亮度增加。
代碼如下:
%%%%%圖像增加,減少亮度
RGB = imread(‘cameraman.tif’);
RGB2 = imadd(RGB,50);
RGB3 = imsubtract(RGB,50);
subplot(1,3,1);imshow(RGB);
subplot(1,3,2);imshow(RGB2);
subplot(1,3,3);imshow(RGB3);
exportgraphics(gca,path+“\increase_brightness.jpg”)
clf;
討論:給圖像的每個(gè)像素加上一個(gè)常數(shù)會(huì)導(dǎo)致圖像整體的亮度變亮,當(dāng)減去一個(gè)常數(shù),會(huì)導(dǎo)致圖像整體變暗。但圖像整體的對(duì)比度去發(fā)生了較大的變化。在運(yùn)用圖像加法的過(guò)程中,尤其要注意所加的數(shù)值大小,當(dāng)數(shù)值過(guò)大時(shí),會(huì)造成全局圖像信息的丟失,即得到的整幅圖像為全白。
-
圖像的減法:
圖像的減法常用于運(yùn)動(dòng)物體的檢測(cè)以及圖像差異的檢測(cè)。圖像減法也可以是更加復(fù)雜的圖像處理的準(zhǔn)備步驟。在MATLAB中可以用imsubstract這個(gè)函數(shù)來(lái)實(shí)現(xiàn)。
圖像的減法可以減去圖像的背景,以突出所需處理的對(duì)象。也可以減少圖像的整體亮度(該部分可見(jiàn)圖像的加法部分)。
減去背景的圖像見(jiàn)上圖的右圖。
代碼如下:
%%
%圖像減法
cameraman = imread(‘cameraman.tif’);
background =imopen (cameraman, strel(‘disk’,15));
cameraman2 = imsubtract(cameraman, background);
gca=figure;
subplot(1,2,1);imshow(cameraman);
subplot(1,2,2);imshow(cameraman2);
exportgraphics(gca,path+“\subtract_background.jpg”)
clf;
討論:background這個(gè)數(shù)據(jù)塊實(shí)際上表示圖像的背景的像素信息。所以當(dāng)原始圖像減去該背景數(shù)據(jù)塊時(shí),由于原始圖像的背景與background的數(shù)據(jù)差不多,所以會(huì)導(dǎo)致所的圖像的背景部分的像素幾乎為0(如上圖所示,其背景部分幾乎是一團(tuán)黑)。但是人物部分,由于background所對(duì)于的數(shù)據(jù)幾乎為0,所以處理前后的圖像的人物幾乎不變。
-
圖像的乘法:
兩幅圖像進(jìn)行乘法運(yùn)算可以實(shí)現(xiàn)掩模操作,即屏蔽掉圖像的某些部分。這是圖像的加法所不具有的。圖像的加法,減法會(huì)改變圖像的亮度,但是圖像的乘法會(huì)更好地保持原圖像的明暗效果,更加的自然。處理前后的圖像的對(duì)比度并不會(huì)出現(xiàn)明顯的變化。
原始圖像如下圖的左圖,經(jīng)乘法操作后的圖像如下圖的右圖。
代碼如下:
%%
%圖像乘法
I = imread(‘moon.tif’);
J = immultiply(I,1.5);
gca=figure;
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J);
exportgraphics(gca,path+“\mutiply_moon.jpg”)
clf;
討論:如上圖所示,月亮較亮的部分的亮度明顯變大,月亮較暗的部分的亮度變化沒(méi)那么明顯。與圖像的加法的結(jié)果相比,圖像的乘法能夠更加自然的保留原始圖像的自然。當(dāng)乘法的系數(shù)變大時(shí),會(huì)發(fā)現(xiàn)圖像出現(xiàn)明顯的失真。例如每當(dāng)系數(shù)為10
時(shí),所得的結(jié)果如下:
-
圖像的除法:
除法運(yùn)算可用于校正成像設(shè)備的非線性影響。除法也可以用于圖像差異的檢測(cè),這種差異的檢測(cè)不同于圖像的減法,該差異更多的體現(xiàn)像素值變化的比率。在MATLAB中可以使用imdivide實(shí)現(xiàn)圖像的除法。
原始圖像可見(jiàn)圖像減法部分的圖像。我們將原始圖像除以除去背景后的圖像,處理結(jié)果如下
代碼如下:
%%
%圖像除法
gca=figure;
Ip = imdivide(cameraman, cameraman2);
imshow(Ip, []);
exportgraphics(gca,path+“\divide_cameraman.jpg”)
討論:處理后的圖像,明顯的反映了任務(wù)的輪廓,以及背景變化的部分。相較于圖像的減法,該方法不需要參考圖像。所以具有一定的優(yōu)勢(shì)。但是圖像的除法的結(jié)果并沒(méi)有圖像的減法的效果明顯。
-
圖像的四則算術(shù)運(yùn)算:
圖像的四則運(yùn)算能夠?qū)⑺膭t四則運(yùn)算結(jié)合在一起。但是直接進(jìn)行四則運(yùn)算需要對(duì)圖像進(jìn)行截取。而MATLAb工具箱提供了imlincomb函數(shù),可以忽略對(duì)圖像的截取,更加方便的對(duì)圖像進(jìn)行處理。
代碼如下:
%%
%圖像四則運(yùn)算
gca=figure;
I = imread(‘rice.png’);
J = imread(‘cameraman.tif’);
K = imlincomb(1.1,I,0.9,J,50,‘uint16’);
imshow(K,[])
exportgraphics(gca,path+“\Algebra.jpg”);
close all;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-478408.html
clear all;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478408.html
到了這里,關(guān)于圖像四則運(yùn)算(加減乘除)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!