数字图像处理 实验一 图像的基本运算
實驗一 圖像的基本運算
一、實驗?zāi)康?/strong>
(1)掌握點運算和代數(shù)運算的算法實現(xiàn)和概念
(2)掌握和幾何運算的算法實現(xiàn)和概念
(2)掌握灰度變換和幾何變換的基本方法
(3)理解圖像灰度直方圖的概念
二、實驗內(nèi)容
(1)任意選擇幾幅圖像,查看其直方圖,說明直方圖和圖像的對應(yīng)關(guān)系。
(2)任意選擇幾幅圖像,對其進行灰度線性變換,結(jié)合以下情況分析輸入圖像和輸出圖像兩者有何變化。
???當(dāng)斜率a>1時;
???當(dāng)斜率 a<1時;
???當(dāng)斜率a=1,b<0時;
???當(dāng)斜率a=1,b>0時;
???當(dāng)斜率a=1,b=0時;
???當(dāng)斜率a=-1,b=255時;
(3)選擇幾幅圖像,對其進行灰度拉伸,選擇不同的拉伸參數(shù),觀察圖像與原圖有何不同,總結(jié)灰度拉伸的原理。
(4)選擇幾幅圖像對其進行幾何變換,理解不同變換對圖像產(chǎn)生的影響。
三、實驗代碼、結(jié)果、分析
(1)代碼:
I=imread('C:\Users\xxxy\Desktop\1.jpg');?imshow(I)
I=rgb2gray(I); %將真彩色圖像轉(zhuǎn)換為灰度圖像,即灰度化處理
add=[]; ?tab1=zeros(1,256);
for?n=0:255
????X=I==n; ?????add=[add;sum(sum(X))];
end; ?
[a b]=size(I);???final=add/(a*b);
figure; imshow(I);
figure; ?bar(0:255,final,'g')
figure; imhist(I)
結(jié)果:
???? ? ? ? ? ? ?
圖1-1:原圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??圖1-2:灰度圖
? ? ? ? ? ??
圖1-3 直方圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1-4 縱坐標(biāo)擴大直方圖
分析:灰度直方圖描述了該灰度級的像素的個數(shù),其橫坐標(biāo)是灰度級,縱坐標(biāo)是該灰度級出現(xiàn)的概率,eg:灰度值為100的概率可近似看做0.004
(2)代碼
I=imread('C:\Users\xxxy\Desktop\2.jpg');????imshow(I)
y=a*I+b/255;????%線性點運算
figure???subplot(2,2,1);????imshow(y);
?
圖2-1 ?原圖
a,b值分別如下,及結(jié)果圖:
[1]a=2;b=10;?????????????????????????????[2]a=0.3;b=1;
?? ? ? ? ? ??
圖2-2:a>1 ????????????????????????????????圖2-3:a<1
[3]a=1;b=-10;?????????????[4]a=1;b=10;??????????????[5]a=1;b=0;
? ?? ??
圖2-4:a=1,b<0 ??? ? ?圖2-5:a=1,b>0 ? ? ? ? ?圖2-6:a=1,b=0
[7]a=-1;b=255;
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2-7:a=-1,b=255
分析:
[1]?如果a>1,輸出圖像的對比度變大,即圖像變得更亮
[2]?如果a<1,輸出圖像的對比度減小,即圖像變得更暗
[3]?如果a=1,b<0,輸出圖像下移,圖像顯示的更暗
[4]?如果a=1,b>0,輸出圖像上移,圖像顯示的更亮
[5]?如果a=1,b=0,輸出圖像不變,與原圖像一樣
[6]?如果a=1,b<0,輸出圖像下移,圖像顯示的更暗
[7]?如果a<0,b<0,輸出圖像亮區(qū)變暗,暗區(qū)變亮
(3)代碼:
I=imread('C:\Users\xxxy\Desktop\3.jpg');imshow(I)
Y=double(I); ?%將參數(shù)I轉(zhuǎn)為雙精度浮點類型
[M,N]=size(Y);
for i=1:M ?????????
????for j=1:N ?????????????
????????if Y(i,j)<=30 ????????????????
????????????Y(i,j)=I(i,j); ????????????
????????else if Y(i,j)<=150 ?????????????????
????????????????Y(i,j)=(200-30)/(160-30)*(I(i,j)-30)+30; ???????????
????????????else???Y(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200; ????????????
????????????end
????????end
????end
end
????figure(2);?????imshow(uint8(Y))
結(jié)果:
?? ? ? ? ? ? ? ? ? ?
???????圖3-1:原圖 ????????????????????????????????????圖3-2:灰度拉伸
分析:
將其小于30的灰度值不變,將30到150的灰度值拉伸到30到200,同時壓縮150到255的灰度值到200到255之間
(4)代碼:
I=imread('C:\Users\xxxy\Desktop\4.jpg');?imshow(I); ?figure;
se = translate(strel(1), [100 100]);??
a = imdilate(I,se);?????imshow(a)%平移 ?????figure;
b = imresize(I,1.5)?????imshow(b)%放大1.5 ??figure;
c= imresize(I,0.5)??????imshow(c)%縮小0.5 ???figure;
[height,width,dim]=size(I);
tform1=maketform('affine',[-1 0 0;0 1 0;width 0 1]);
d1=imtransform(I,tform1,'nearest');??imshow(d1);%水平鏡像?figure;
tform2=maketform('affine',[1 0 0;0 -1 0;0 height 1]);
d2=imtransform(I,tform2,'nearest');??imshow(d2);%垂直鏡像 figure;
e1 = imrotate(I,90);??imshow(e1)%旋轉(zhuǎn)90度 ???figure;
e2 = imrotate(I,180);?imshow(e2)%旋轉(zhuǎn)180度 ??figure;
e3 = imrotate(I,270);??imshow(e3)%旋轉(zhuǎn)270度 ?figure;
e4 = imrotate(I,360);??imshow(e4)%旋轉(zhuǎn)360度 ?figure;
??? ? ? ??
????????圖4-1:原圖 ?????????????????????????????????圖4-2:平移
? ? ? ? ? ?
????????圖4-3:放大1.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖4-4:縮小0.5
????????????????
???????????圖4-5:水平鏡像????????????????????????????????圖4-5:垂直鏡像
????????????
? ? ? ????????圖4-7:旋轉(zhuǎn)90度 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖4-8:旋轉(zhuǎn)180度
?? ? ? ? ? ? ? ? ? ?
????????????圖4-9:旋轉(zhuǎn)270度 ???????????????????????????圖4-10:旋轉(zhuǎn)360度 ?
總結(jié)
以上是生活随笔為你收集整理的数字图像处理 实验一 图像的基本运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手写数字识别实现
- 下一篇: 《Python快速入门》6大数据类型详解