一、實驗?zāi)康呐c要求
1.熟悉及掌握在MATLAB中能夠處理哪些格式的圖像;
2.熟練掌握在MATLAB中如何讀取圖像及圖像的屬性信息(大小、顏色、亮度(灰度)、寬度、高度等);
3.掌握如何在MATLAB中按照指定要求存儲一副圖像的方法;
4.了解圖像的算術(shù)運算在數(shù)字圖像中的初步應(yīng)用,并體會其處理的過程和處理前后圖像的變化;
二、實驗內(nèi)容及步驟
1.圖像的讀取,顯示和存儲,以及提取圖像的基本信息:
(1)使用imread()函數(shù)讀取一副圖像,假設(shè)其名為lena.bmp,存入一個矩陣(或數(shù)組)中;
(2)利用whos命令提取該讀入圖像lena.bmp的基本信息;
(3)利用imshow()函數(shù)顯示圖像lena.bmp;
(4)利用imwrite()函數(shù)存儲該圖像,命名為lena2.jpg
(5)聯(lián)合使用figure, subplot(), imshow()函數(shù)將lena.bmp和lenaRGB.bmp顯示出來,觀察兩幅圖像的質(zhì)量。
lena.bmp為灰度圖,單通道;lenaRGB.bmp為RGB圖像,三通道
clc;clear;close all;
img1 = imread("lena.bmp");
img2 = imread("lenaRGB.bmp");
whos img1;
imshow(img1)
title('lena.bmp');
figure;
subplot(121)
imshow(img1)
title('lena.bmp')
subplot(122)
imshow(img2)
title('lenaRGB.bmp');
2.圖像間的代數(shù)運算:
(1)使用imread()函數(shù)讀入圖像:lenaRGB.bmp和pout.jpg
(2)進行圖像的加法運算(自己寫代碼);
(3)調(diào)用imadd函數(shù)進行兩幅圖像的相加;
(4)比較第二步和第三步的結(jié)果。
(5)重復(fù)以上步驟,進行圖像的相減,相乘相除運算(分別與直接使用圖像處理工具箱中的代數(shù)運算函數(shù)進行結(jié)果比較。文章來源:http://www.zghlxwxcb.cn/news/detail-440937.html
進行圖像操作前要將圖片變?yōu)橄嗤叽?,使用MATLAB的基本算術(shù)符(+、-、*、/ 等)可以執(zhí)行圖像的算術(shù)操作,但是在此之前必須將圖像轉(zhuǎn)換為適合進行基本操作的雙精度類型。
源碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-440937.html
%加法
clc;clear;close all;
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = img1+img2
img4 = imadd(img1,img2)
figure;
subplot(141)
imshow(img1)
title('lena原始圖像')
subplot(142)
imshow(img2)
title('pout原始圖像')
subplot(143)
imshow(img3)
title('相加后圖像')
subplot(144)
imshow(img4)
title('imadd后圖像');
%減法
clc;clear;close all;
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = img1-img2
img4 = imsubtract(img1,img2)
figure;
subplot(141)
imshow(img1)
title('lena原始圖像')
subplot(142)
imshow(img2)
title('pout原始圖像')
subplot(143)
imshow(img3)
title('相減后圖像')
subplot(144)
imshow(img4)
title('imsubtract后圖像');
%乘法
clc;clear;close all;
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = uint16(img1).*uint16(img2)
img4 = immultiply(uint16(img1),uint16(img2))
figure;
subplot(141)
imshow(img1)
title('lena原始圖像')
subplot(142)
imshow(img2)
title('pout原始圖像')
subplot(143)
imshow(img3)
title('相乘后圖像')
subplot(144)
imshow(img4)
title('immultiply后圖像');
%除法
clc;clear;close all;
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = double(img1)./double(img2)
img4 = imdivide(double(img1),double(img2))
figure;
subplot(141)
imshow(img1)
title('lena原始圖像')
subplot(142)
imshow(img2)
title('pout原始圖像')
subplot(143)
imshow(img3)
title('相除后圖像')
subplot(144)
imshow(img4)
title('immultiply后圖像');
- 圖像的線性運算:
(1)使用imread()函數(shù)讀入圖像:cameraman.bmp
(2)進行圖像的縮放運算( f1=g?1.2 )以及線性運算
(3)聯(lián)合使用figure, subplot(), imshow()函數(shù)顯示結(jié)果。 - f1=g?1.2 等價于f=immultiply(g,1.2)
- imshow(I) 以及imshow(I,[])的區(qū)別:matlab的圖像經(jīng)過數(shù)值計算之后會將數(shù)據(jù)類型轉(zhuǎn)換為double類型的,double類型數(shù)據(jù)在imshow函數(shù)里默認(rèn)為0~1范圍內(nèi),數(shù)值超過1的重置為白色,一般顯示出來的是黑白圖像。imshow(I,[ ])的意思相當(dāng)于imshow(I,[min(I(??) max(I(??)])I中數(shù)值最大值與最小值分別為255和0。
clc;clear;close all;
I = imread("cameraman.bmp");
I1=1.2*I;
subplot(1,2,1);imshow(I);title('原始圖像');
subplot(1,2,2);imshow(I1);title('線性運算圖像');
clc;clear;close all;
img1 = imread("cameraman.bmp");
img2 = immultiply(img1,1.2)
figure;
subplot(121)
imshow(img1)
title('cameraman原始圖像')
subplot(122)
imshow(img2)
title('cameraman縮放運算圖像');
到了這里,關(guān)于數(shù)字圖像處理實驗——數(shù)字圖像處理初步的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!