版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.1Python開發(fā)基礎(chǔ)1.2數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)簡(jiǎn)介1.3系統(tǒng)界面開發(fā)基礎(chǔ)1.4圖像顯示第1章圖像處理編程基礎(chǔ)第1章基礎(chǔ)第2章彩色圖像特效處理第3章圖像的合成處理第4章圖像的幾何轉(zhuǎn)變第5章圖像的灰度變化第6章圖像平滑處理第7章圖像邊緣銳化處理第8章圖像形態(tài)學(xué)處理第9章圖像分割與測(cè)量第10章圖像頻域變換處理第11章基于深度學(xué)習(xí)CNN模型的漢字識(shí)別第12章基于深度學(xué)習(xí)CNN模型的語(yǔ)音識(shí)別第13章基于深度學(xué)習(xí)FasterR-CNN模型的全套可編輯PPT課件1.1Python開發(fā)基礎(chǔ)全套可編輯PPT課件Python的安裝(1)進(jìn)入Python的官方下載頁(yè)面,/downloads/,單擊downloads(2)選擇需要的Python版本。(3)找到要下載的Python版本,單擊安裝。(4)測(cè)試Python是否安裝成功。(5)添加環(huán)境變量。PyCharm的安裝.PyCharm的安裝PyCharm是一種十分簡(jiǎn)易且有效的Python編輯器。從官網(wǎng)上下載PyCharm的安裝包,使用的是PyCharmCommunity版本。找到下載完成的.exe文件,依次單擊【Next】按鈕、【Install】按鈕、【Finish】按鈕即可完成安裝。PyCharm的初始化2.PyCharm的初始化完成上面的PyCharm軟件安裝后,需要對(duì)PyCharm進(jìn)行一些初始化配置。在PyCharm中安裝常用庫(kù)方法1.在PyCharm中安裝常用庫(kù)在完成PyCharm的初始化配置后,接下來配置OpenCV及一些常用庫(kù)。單擊左上角的【File】菜單,之后單擊【Settings】,打開【Project:pythonProject】欄目,單擊【ProjectInterpreter】,雙擊【pip】,出現(xiàn)OpenCV庫(kù)函數(shù)配置界面。選擇【opencv-python】后,單擊左下角的【InstallPackage】按鈕,在PyCharm中安裝常用庫(kù)方法2.在命令提示符中安裝常用庫(kù)打開命令提示符后,輸入“piplist”即可查看Python中安裝的常用庫(kù)。輸入“pipinstall下載的模塊名”然后單擊回車鍵即可安裝。本仿真系統(tǒng)所用模塊對(duì)應(yīng)的安裝命令為:在PyCharm中安裝常用庫(kù)pipinstalltkinterpipinstallpillowpipinstallopencv-pythonpipinstallnumpypipinstallmatplotlibpipinstallscipypipinstalleasyguipipinstallpywin32pipinstallscikit-image1.2數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)簡(jiǎn)介圖像處理仿真系統(tǒng)圖像處理仿真系統(tǒng)圖像處理仿真系統(tǒng),該仿真系統(tǒng)集成九大模塊:圖像色彩處理、圖像合成、幾何變換、灰度變化、平滑處理、邊緣銳化處理、形態(tài)學(xué)處理、分割及測(cè)量和變換域處理等內(nèi)容,包含了各類圖像處理算法,涵蓋了數(shù)字圖像處理大部分的基礎(chǔ)知識(shí)。仿真系統(tǒng)界面含有Windows窗口、提示語(yǔ)、運(yùn)行按鈕、以章命名的菜單項(xiàng)、各章對(duì)應(yīng)算法的子菜單項(xiàng)、子菜單項(xiàng)消息映射響應(yīng)函數(shù)、處理前及處理后的圖像顯示等要素。數(shù)字圖像處理系統(tǒng)數(shù)字圖像處理系統(tǒng)一般數(shù)字圖像處理系統(tǒng)含有圖像處理、圖像分析以及圖像識(shí)別理解三個(gè)層次。3.深度學(xué)習(xí)的基礎(chǔ)深度學(xué)習(xí)引入了端到端學(xué)習(xí)的概念,即從輸入圖像到識(shí)別類別的三個(gè)層次在一個(gè)模型框架內(nèi)完成。1.3系統(tǒng)界面開發(fā)基礎(chǔ)常用設(shè)計(jì)圖形界面的模塊常用設(shè)計(jì)圖形界面的模塊Python有多種用于設(shè)計(jì)用戶界面的模塊,常用的模塊:
Tkinter:使用Tk平臺(tái),Python系統(tǒng)自帶的標(biāo)準(zhǔn)圖形用戶界面庫(kù);使用Tkinter庫(kù)創(chuàng)建窗口界面使用Tkinter庫(kù)創(chuàng)建窗口界面(1)導(dǎo)入Tkinter模塊;importtkinter或fromtkinterimport*(2)創(chuàng)建一個(gè)頂層容器對(duì)象;root=tkinter.Tk()#創(chuàng)建一個(gè)窗體對(duì)象root.title(‘?dāng)?shù)字圖像處理——python’)#設(shè)置窗口標(biāo)題root.geometry(‘750x490+110+50’)#設(shè)置窗口大小(3)在頂層容器對(duì)象中,添加其他組件;(4)采取調(diào)用pack()方法進(jìn)行容器的組件布局;(5)進(jìn)入主事件循環(huán)。root.mainloop()#顯示窗口(消息循環(huán))布局管理布局管理在Tkinter中,布局管理器負(fù)責(zé)管理組件的位置和大小。、Tkinter提供了三種布局管理器:pack、grid和place。4.組件(1)創(chuàng)建標(biāo)簽組件label(2)添加按鈕button菜單(1)創(chuàng)建菜單條對(duì)象:menubar=Menu(窗體容器)(2)把菜單條放置到窗體中:窗體容器.config(menu=menubar)(3)在菜單條中創(chuàng)建菜單:菜單名稱=Menu(menubar,tearoff=0)(4)為菜單添加文字標(biāo)簽menubar.add_cascade(label="文字標(biāo)簽",menu=菜單名稱)(5)在菜單中添加菜單項(xiàng)菜單名稱.add_command(label="菜單項(xiàng)名稱",command=功能函數(shù)名)fileMenu.add_command(label="打開攝像頭",command=open_camera)#在菜單中添加菜單項(xiàng)組件.系統(tǒng)自帶測(cè)試圖像的顯示(1)需要導(dǎo)入模塊fromtkinterimport*fromPILimportImageTkfromPILimportImage,ImageEnhance(2)使用Image.open()方法加載一張圖片到內(nèi)存中,并用ImageTk.PhotoImage()方法將其轉(zhuǎn)換成可顯示的圖像對(duì)象。img=Image.open("'sucai.jpg")#加載圖片photo=ImageTk.PhotoImage(img)#轉(zhuǎn)換成可顯示的圖像對(duì)象```菜單菜單創(chuàng)建菜單的主要步驟如下:(1)創(chuàng)建菜單條對(duì)象:menubar=Menu(窗體容器)(2)把菜單條放置到窗體中:窗體容器.config(menu=menubar)(3)在菜單條中創(chuàng)建菜單:菜單名稱=Menu(menubar,tearoff=0)其中,tearoff取值0表示菜單不能獨(dú)立使用。菜單(4)為菜單添加文字標(biāo)簽menubar.add_cascade(label="文字標(biāo)簽",menu=菜單名稱)(5)在菜單中添加菜單項(xiàng)菜單名稱.add_command(label="菜單項(xiàng)名稱",command=功能函數(shù)名)fileMenu.add_command(label="打開攝像頭",command=open_camera)#在菜單中添加菜單項(xiàng)1.4圖像顯示系統(tǒng)自帶測(cè)試圖像的顯示.(1)需要導(dǎo)入模塊fromtkinterimport*fromPILimportImageTkfromPILimportImage,ImageEnhance(2)使用Image.open()方法加載一張圖片到內(nèi)存中,并用ImageTk.PhotoImage()方法將其轉(zhuǎn)換成可顯示的圖像對(duì)象。img=Image.open("'sucai.jpg")#加載圖片photo=ImageTk.PhotoImage(img)#轉(zhuǎn)換成可顯示的圖像對(duì)象```系統(tǒng)自帶測(cè)試圖像的顯示(3)借助tkinter中的Label組件將圖像顯示在界面上root=Tk() #創(chuàng)建窗口對(duì)象label=Label(root,image=photo) #創(chuàng)建標(biāo)簽對(duì)象label.pack() #將標(biāo)簽放置到窗口中root.mainloop() #運(yùn)行窗口事件循環(huán)用戶打開圖像文件的顯示用戶打開圖像文件的顯示首先通過建立文件菜單,在【打開圖像】子菜單項(xiàng)指定消息響應(yīng)函數(shù)open_image()menuBar=Menu(root)root.configure(menu=menuBar)fileMenu=Menu(menuBar)menuBar.add_cascade(label="文件",menu=fileMenu)fileMenu.add_command(label="打開圖像",command=open_image)攝像頭拍攝圖像的顯示攝像頭拍攝圖像的顯示首先通過文件菜單,在【打開攝像頭】子菜單項(xiàng)指定消息響應(yīng)函數(shù)open_camera()menuBar=Menu(root)root.configure(menu=menuBar)fileMenu=Menu(menuBar)menuBar.add_cascade(label="文件",menu=fileMenu)fileMenu.add_command(label="打開攝像頭",command=open_camera)第2章彩色圖像特效處理目錄2.1圖像的顏色表示2.2彩色圖像的灰度化處理2.3彩色圖像的著色處理2.4彩色圖像的亮度調(diào)整2.5彩色圖像的對(duì)比度調(diào)整2.6彩色圖像的曝光處理2.7彩色圖像的馬賽克處理2.8彩色圖像的銳化處理2.9彩色圖像的浮雕處理2.10彩色圖像的霓虹處理2.1圖像的顏色表示圖像的顏色表示圖像的顏色表示紅、綠、藍(lán)被稱為三原色,簡(jiǎn)稱RGB三原色。f(x,y,z)={fred(x,y,z),fgreen(x,y,z),fblue(x,y,z)}其中f表示空間坐標(biāo)為(x,y,z)位置點(diǎn)的顏色,fred、fgreen、fblue分別表示該位置點(diǎn)的紅、綠、藍(lán)三種原色的顏色分量值。圖像的存儲(chǔ)結(jié)構(gòu)圖像的存儲(chǔ)結(jié)構(gòu)圖像由數(shù)字陣列信息組成,用以描述圖像中各像素點(diǎn)的強(qiáng)度與顏色,圖像的存儲(chǔ)結(jié)構(gòu)圖像通常用由采樣點(diǎn)的值所組成的矩陣來表示。每一個(gè)采樣單元叫作一個(gè)像素(pixel),圖像的存儲(chǔ)結(jié)構(gòu)在計(jì)算機(jī)內(nèi)通常用二維數(shù)組來表示數(shù)字圖像的矩陣。抽象為數(shù)字矩陣:?jiǎn)紊珗D像的數(shù)據(jù)示意圖單色圖像圖像的存儲(chǔ)結(jié)構(gòu)8位灰度圖像8位灰度圖像(1)8位灰度圖像的存儲(chǔ)文件帶有圖像顏色表,顏色表共有256項(xiàng),每一表項(xiàng)均由紅、綠、藍(lán)顏色分量值組成,并且紅、綠、藍(lán)顏色分量值都相等,即:fred(x,y)=fgreen(x,y)=fblue(x,y)(2)圖像中每一個(gè)像素信息是圖像顏色表的索引號(hào)。8位偽彩色圖像8位偽彩色圖像(1)圖像顏色表中的紅、綠、藍(lán)顏色分量值不全相等,如表2-2所示,即:fred(x,y)≠fgreen(x,y)≠fblue(x,y)(2)圖像中每一個(gè)像素信息也是圖像顏色表的索引號(hào)。24位真彩色圖像24位真彩色圖像(1)圖像中每一個(gè)像素信息由RGB三個(gè)分量組成,每個(gè)分量各占8位,每個(gè)像素需24位。(2)fred(x,y)、fgreen(x,y)、fblue(x,y)取值范圍均為0~255。將紅、綠、藍(lán)三種顏色的數(shù)據(jù)分離出來,可以得到三個(gè)8位平面數(shù)據(jù)。空間分辨率空間分辨率空間分辨率指圖像數(shù)字化的空間精細(xì)程度,說明了數(shù)字圖像的實(shí)際精細(xì)度??臻g分辨率越高,圖像越逼真。灰度級(jí)分辨率灰度級(jí)分辨率數(shù)字圖像的灰度級(jí)分辨率表示每一像素的顏色值所占的二進(jìn)制位數(shù),也叫顏色深度?;叶燃?jí)分辨率越高,則能表示的顏色數(shù)目越多,圖像越清晰。2.2彩色圖像的灰度化處理函數(shù)說明.函數(shù)說明(1)retval=cv2.imread(filename,flags)用于從指定的文件讀取圖像。(2)cv2.cvtColor()用于實(shí)現(xiàn)色彩空間的轉(zhuǎn)換retval=cv2.cvtColor(src,code[,dstCn])(3)cv2.imwrite(filename,img[,params])用于保存圖像。理論基礎(chǔ)理論基礎(chǔ)灰度圖像中顏色的R、G、B分量值相等,只有灰度而沒有彩色。常用的轉(zhuǎn)換方式為:Gray(i,j)=0.11×R(i,j)+0.59×G(i,j)+0.3×B(i,j)轉(zhuǎn)換后:R(i,j)=G(i,j)=B(i,j)=Gray(i,j)2.3彩色圖像的著色處理彩色圖像的著色處理(1)將彩色圖像轉(zhuǎn)換為灰度圖像,使得紅、綠、藍(lán)三個(gè)分量值相等。(2)通過對(duì)話框獲取想要著色的顏色信息。(3)根據(jù)想要著色的顏色信息,分別改變對(duì)應(yīng)的紅、綠、藍(lán)三個(gè)分量的值,即可得到想要著色的圖像。函數(shù)說明函數(shù)說明OpenCV中,image.shape用于返回圖像對(duì)象的高度、寬度和通道數(shù)的屬性說明。其中,image.shape[:2],表示獲取圖像的高度、寬度;image.shape[:3],表示獲取圖像的的高度、寬度和通道數(shù);image.shape[0],表示獲取圖像的垂直尺寸,即高度;image.shape[1],表示獲取圖像的水平尺寸,即寬度;image.shape[2],表示獲取圖像的通道數(shù)。2.4彩色圖像的亮度調(diào)整理論基礎(chǔ)理論基礎(chǔ)亮度的調(diào)整,是指人眼亮度感覺的調(diào)整,可以通過對(duì)R、G、B顏色增加(增加亮度)或減少(減少亮度)相同的增量來顯示。亮度的調(diào)整就是給每個(gè)分量乘以一個(gè)值,這個(gè)值由對(duì)話框輸入,三個(gè)顏色分別乘以這個(gè)值后再返回給原來的顏色分量:①當(dāng)輸入值為1時(shí),圖像保持原來亮度;②當(dāng)輸入值小于1時(shí),圖像亮度的就減少,圖像就變暗;③當(dāng)輸入值大于1時(shí),就可以使圖像的亮度增加。函數(shù)說明(1)PythonImagingLibrary,它為Python解釋器提供了圖像編輯函數(shù)。PIL的ImageEnhance模塊包含許多可用于圖像增強(qiáng)的類。其中,ImageEnhance.Brightness()方法用于控制圖像的亮度。用法:obj=ImageEnhance.Brightness(image)retval=obj.enhance(factor)image:輸入的圖像;factor:增強(qiáng)因子,當(dāng)增強(qiáng)因子輸入為0.0時(shí)則給出黑色圖像,輸入為1.0時(shí)則給出原始圖像;retval:變換亮度后的圖像。2.5彩色圖像的對(duì)比度調(diào)整理論基礎(chǔ)理論基礎(chǔ)增加對(duì)比度的意思就是把所感興趣的顏色范圍拉開,使得該范圍內(nèi)的像素,亮的越亮,暗的越暗,從而達(dá)到了增強(qiáng)對(duì)比度的目的。從對(duì)話框獲得調(diào)整的對(duì)比度的參數(shù):①當(dāng)參數(shù)為1時(shí),圖像保持原來亮度;②當(dāng)參數(shù)小于1時(shí),圖像對(duì)比度減弱;③當(dāng)參數(shù)大于1時(shí),圖像對(duì)比度增加。函數(shù)說明(1)ImageEnhance.Contrast()方法是PIL包中提供用于控制圖像的對(duì)比度。用法:obj=ImageEnhance.Contrast(image)retval=obj.enhance(factor)image:輸入的圖像;factor:增強(qiáng)因子,增強(qiáng)因子為0.0將產(chǎn)生純灰色圖像,增強(qiáng)因子為1.0是原始圖像,增強(qiáng)因子大于1.0對(duì)比度增強(qiáng),增強(qiáng)因子小于1.0對(duì)比度減弱;retval:變換對(duì)比度后的圖像。2.6彩色圖像的曝光處理理論基礎(chǔ)曝光圖像的算法原理是逆轉(zhuǎn)數(shù)值小于128的R、G、B三分量。例如,三分量值為(60,210,135)的像素,只是紅色被逆轉(zhuǎn),經(jīng)過轉(zhuǎn)換后為(195,210,135);而對(duì)于三分量值為(50,100,70)的像素,各分量均小于128,所以都需要逆轉(zhuǎn),得到(205,155,185)。g(i,j)=255-f(i,j)如果f(i,j)<1282.7彩色圖像的馬賽克處理理論基礎(chǔ)馬賽克效果,其原理是將圖像從形式上劃分為很多小塊,在每塊內(nèi)的各個(gè)像素都取到相同的紅、綠、藍(lán)顏色分量值,從而對(duì)某些細(xì)節(jié)進(jìn)行模糊化處理,使圖像粗糙化。馬賽克處理后,圖像每一小塊矩陣內(nèi)的所有像素值都應(yīng)該取相同的值2.8彩色圖像的銳化處理理論基礎(chǔ)突出圖像的變化部分,使模糊的圖像變得更加清晰。這里采用的算法原理是先將要處理的圖像像素與它左對(duì)角線上的像素之間的像素差值乘上一個(gè)銳化度數(shù),然后再加上原先的像素值Red=R+(R-r)/4;Blue=B+(B-b)/4;Green=G+(G-g)/4;R、G、B為當(dāng)前原像素f(i,j)的紅、綠、藍(lán)三個(gè)分量值,r、g、b為原像素相鄰像素f(i-1,j-1)的紅、綠、藍(lán)三個(gè)分量值,2.9彩色圖像的浮雕處理理論基礎(chǔ)浮雕效果就是只將圖像的變化部分突出出來,而相同顏色部分則被淡化,使圖像出現(xiàn)縱深感,從而達(dá)到浮雕效果。算法是先計(jì)算要處理的像素與其相鄰像素間的像素值之差,將差值作為處理后的像素值。Red=R-r+128;Blue=B-b+128;Green=G-g+128;R、G、B為當(dāng)前原像素f(i,j)的紅綠藍(lán)三個(gè)分量值,r、g、b為前一個(gè)相鄰像素f(i-1,j)的紅、綠、藍(lán)三個(gè)分量值2.10彩色圖像的霓虹處理理論基礎(chǔ)先計(jì)算原圖像當(dāng)前像素f(i,j)的紅、綠、藍(lán)分量值與其相同行f(i+1,j)及相同列f(i,j+1)相鄰像素的梯度,即差的平方之和的平方根,然后將梯度值作為處理后像素g(i,j)的紅、綠、藍(lán)的三個(gè)分量值。R1=(r1-r2)2R2=(r1-r3)2G1=(g1-g2)2G2=(g1-g3)2B1=(b1-b2)2B2=(b1-b3)2Red=2×Green=2×Blue=2×r1、g1、b1分別為原像素f(i,j)的紅、綠、藍(lán)分量值,r2、g2、b2分別為原像素同行相鄰像素f(i+1,j)的紅、綠、藍(lán)分量值,r3、g3、b3分別為原像素同列相鄰像素f(i,j+1)的紅、綠、藍(lán)分量值第3章圖像的合成處理目錄3.1圖像的代數(shù)運(yùn)算3.1.1圖像加運(yùn)算3.1.2圖像減運(yùn)算3.2圖像邏輯運(yùn)算3.1圖像的代數(shù)運(yùn)算理論基礎(chǔ)代數(shù)運(yùn)算是指對(duì)兩幅輸入圖像進(jìn)行點(diǎn)對(duì)點(diǎn)的加、減、乘、除計(jì)算而得到輸出圖像的運(yùn)算。加運(yùn)算C(x,y)=A(x,y)+B(x,y)減運(yùn)算C(x,y)=A(x,y)-B(x,y)乘運(yùn)算C(x,y)=A(x,y)×B(x,y)除運(yùn)算C(x,y)=A(x,y)÷B(x,y)3.1.1圖像加運(yùn)算理論基礎(chǔ)把針對(duì)同一目標(biāo)物在相同條件下,做M次重復(fù)攝取的圖像相加,取平均值作為輸出圖像,輸出的平均圖像(x,y)中隨機(jī)噪聲的含量,比單幅圖像s(x,y)的隨機(jī)噪聲含量削弱S(x,y)=G(x,y)+F(x,y)(3-5)G(x,y)是非相關(guān)的、具有零均值的隨機(jī)噪聲函數(shù)說明retval=cv2.resize(src,dsize,fx=None,fy=None,interpolation=None)該函數(shù)用于將原始圖像調(diào)整為指定大小。retval:輸出指定大小圖像;src:原始圖像;dsize:輸出圖像的尺寸(元組方式),注意desize的參數(shù)順序是,第一個(gè)參數(shù)指定輸出圖像的寬度(列數(shù)),第二個(gè)參數(shù)指定輸出圖像的高度(行數(shù));fx:沿水平軸縮放的比例因子;fy:沿垂直軸縮放的比例因子;interpolation:插值方式效果展示圖像通常用由采樣點(diǎn)的值所組成的矩陣來表示。每一個(gè)采樣單元叫作一個(gè)像素(pixel),3.1.2圖像減運(yùn)算函數(shù)說明理論基礎(chǔ)圖像相減可用于去除一幅圖像中所不需要的圖案,也可以用于檢測(cè)同一場(chǎng)景的兩幅圖像之間的變化。當(dāng)兩幅圖像進(jìn)行減運(yùn)算時(shí),相同位置的背景點(diǎn)因?yàn)榛叶戎迪嗤?,結(jié)果變成了黑點(diǎn)函數(shù)說明result=cv2.subtract(a,b)該函數(shù)由OpenCV提供用于實(shí)現(xiàn)圖像減法運(yùn)算。result:表示計(jì)算的結(jié)果;a、b:表示需要進(jìn)行減法計(jì)算的兩個(gè)像素值。當(dāng)使用cv2.subtract()函數(shù)進(jìn)行圖像減運(yùn)算時(shí)。規(guī)則如下:效果展示3.2圖像邏輯運(yùn)算理論基礎(chǔ)按位邏輯運(yùn)算是一種對(duì)圖像進(jìn)行像素級(jí)別的邏輯操作的方法?;具\(yùn)算法則如下:(1)與運(yùn)算的法則是當(dāng)兩個(gè)值都是1時(shí)兩個(gè)數(shù)與的結(jié)果等于1,其他全為0。(2)或運(yùn)算的法則是當(dāng)兩個(gè)值都是0時(shí)兩個(gè)數(shù)或的結(jié)果等于0,其他全為1。(3)異或運(yùn)算的法則是當(dāng)運(yùn)算的兩個(gè)數(shù)取值不同時(shí),結(jié)果為1;相同則為0。(4)非運(yùn)算的法則是當(dāng)數(shù)值為0時(shí),結(jié)果為1;當(dāng)數(shù)值為1時(shí),結(jié)果為0。位與運(yùn)算函數(shù)說明在OpenCV中的cv2.bitwise_and()函數(shù)用于進(jìn)行位與運(yùn)算,其一般格式為:retval=cv2.bitwise_and(src1,src2[,mask])retval:表示與輸入值具有相同大小的輸出值;src1:表示第一個(gè)輸入值;src2:表示第二個(gè)輸入值;mask:表示可選操作掩碼。效果展示效果展示通過位與運(yùn)算提取掩膜圖像中感興趣的區(qū)域,按位邏輯運(yùn)算可以用于圖像分割,提取感興趣的目標(biāo)。位或運(yùn)算函數(shù)說明OpenCV中的cv2.bitwise_or()函數(shù)用于進(jìn)行位或運(yùn)算,其一般格式為:retval=cv2.bitwise_or(src1,src2[,mask])retval:表示與輸入值具有相同大小的輸出值;src1:表示第一個(gè)輸入值;src2:表示第二個(gè)輸入值;mask:表示可選操作掩碼。效果展示兩個(gè)圖像進(jìn)行位或操作,將不同的圖像部分進(jìn)行組合,可以實(shí)現(xiàn)圖像的混合、疊加和融合效果。這在圖像處理、特效制作和圖像合成中常用于創(chuàng)建創(chuàng)意效果和特殊效果。位非運(yùn)算函數(shù)說明OpenCV中的cv2.bitwise_not()函數(shù)用于按位非運(yùn)算,其一般格式為:retval=cv2.bitwise_not(src[,mask])retval:表示與輸入值具有相同大小的輸出值;src:表示輸入值;mask:表示可選操作掩碼。效果展示位非運(yùn)算實(shí)際上是對(duì)圖像二值化后進(jìn)行反色變換的結(jié)果。位異或運(yùn)算函數(shù)說明(1)OpenCV中的cv2.bitwise_xor()函數(shù)用于位異或運(yùn)算,其一般格式為:retval=cv2.bitwise_xor(src1,src2[,mask])retval:表示與輸入值具有相同大小的輸出值;src1:表示第一個(gè)輸入值;src2:表示第二個(gè)輸入值;mask:表示可選操作掩碼。效果展示使用位異或運(yùn)算,可以檢測(cè)出兩個(gè)圖像之間的差異和變化。相同之處為0,即為黑色,不同之處為白色。第4章圖像的幾何變換目錄4.1概述 4.2圖像平移 4.3圖像鏡像 4.4圖像縮放 4.5圖像轉(zhuǎn)置 4.6投影變換 4.7圖像旋轉(zhuǎn) 4.1概述概述圖像幾何變換是改變像素的空間位置,并估算新空間位置上的像素灰度取值,重構(gòu)圖像的空間結(jié)構(gòu)實(shí)現(xiàn)圖像各像素點(diǎn)以坐標(biāo)原點(diǎn)為中心的比例縮放、反射、旋轉(zhuǎn)等各種變換。變換后的點(diǎn)集矩陣=變換矩陣T×變換前的點(diǎn)集矩陣。幾何變換全部采用統(tǒng)一的矩陣表示法,形式都如下:概述復(fù)合變換的矩陣等于基本變換的矩陣按順序依次相乘得到的組合矩陣。若干次基本變換仍可用3×3階表示。
復(fù)合比例:復(fù)合平移:概述復(fù)合旋轉(zhuǎn):4.2圖像平移理論基礎(chǔ)理論基礎(chǔ)圖像平移是將圖像中所有的點(diǎn)都按照指定的平移量水平、垂直移動(dòng)。當(dāng)想將原始圖像向右下移動(dòng)120個(gè)像素時(shí),可以計(jì)算出M矩陣為:函數(shù)說明(1)retval=np.float32()用于創(chuàng)建單精度浮點(diǎn)型數(shù)組。(2)OpenCV中提供的仿射函數(shù)為cv2.warpAffine(),可以利用變換矩陣M對(duì)圖像進(jìn)行如旋轉(zhuǎn)、仿射、平移等變換。其中,M具體可為:retval=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])retval:仿射后的輸出圖像,類型與原始圖像相同;src:表示要仿射的原始圖像;M:表示變換矩陣;dsize:表示輸出圖像尺寸的大小,輸入順序(寬,高);flags:表示插入值;borderMode:表示邊類型;borderValue:表示邊界值。效果展示4.3圖像鏡像理論基礎(chǔ)圖像的鏡像變換分為兩種:一種是水平鏡像,另一種是垂直鏡像。圖像的水平鏡像操作以原圖像的垂直中軸線為中心,將圖像分為左右兩部分進(jìn)行對(duì)稱變換;圖像的垂直鏡像操作以原圖像的水平中軸線為中心,將圖像分為上下兩部分進(jìn)行對(duì)稱變換。(1)水平鏡像變換設(shè)圖像的寬度為width,則水平鏡像變換的映射關(guān)系如下:用矩陣描述為:變換矩陣M為:理論基礎(chǔ)(2)垂直鏡像變換設(shè)圖像的高度為height,則垂直鏡像變換的映射關(guān)系如下:用矩陣描述為:變換矩陣M為:效果展示4.4圖像縮放理論基礎(chǔ)理論基礎(chǔ)圖像的比例縮放矩陣用齊坐標(biāo)表示為:(1)kx
>1且ky>1時(shí),原圖像被放大。(2)當(dāng)kx<1且ky<1時(shí),原圖像被縮小?!瘛瘛瘛瘛裥Ч故?.5圖像轉(zhuǎn)置理論基礎(chǔ)理論基礎(chǔ)圖像的轉(zhuǎn)置操作是將圖像像素的x坐標(biāo)和y坐標(biāo)互換。該操作將改變圖像的高度和寬度,轉(zhuǎn)置后圖像的高度和寬度將互換。即效果展示4.6投影變換理論基礎(chǔ)(1)剛體變換如果一幅圖像中的兩點(diǎn)間的距離經(jīng)變換后映射到另一幅圖像中仍然保持不變剛體變換僅局限于平移、旋轉(zhuǎn)和反轉(zhuǎn)(2)仿射變換直線經(jīng)過變換后映射到另一幅圖像上仍為直線,并且保持平行關(guān)系仿射變換適應(yīng)于平移、旋轉(zhuǎn)、縮放和反轉(zhuǎn)(鏡像)等情況。理論基礎(chǔ)(3)投影變換直線經(jīng)過變換后映射到另一幅圖像上仍為直線,但平行關(guān)系基本不保持。二維平面上的投影變換具體可用下面的非奇異3×3矩陣形式來描述
則二維投影變換按照式(4-17)將像素坐標(biāo)點(diǎn)(x,y)映射為像素坐標(biāo)點(diǎn)。
函數(shù)說明投影變換是在三維空間內(nèi)進(jìn)行的,如果指定好變換前的4個(gè)頂點(diǎn)的坐標(biāo),設(shè)定其變換后相應(yīng)的4個(gè)頂點(diǎn)的坐標(biāo),并設(shè)定一個(gè)m8的值,通過解方程,就可以求出投影變換矩陣,實(shí)現(xiàn)投影變換功能。(1)在OpenCV中提供了cv2.getPerspectiveTransform()函數(shù)來計(jì)算投影變換矩陣。retval=cv2.getPerspectiveTransform(src,dst)retval:返回計(jì)算得到的變換矩陣;dst:表示在目標(biāo)圖像上投影得到的四個(gè)像素頂點(diǎn);src:表示原始圖像上指定四個(gè)頂點(diǎn)。函數(shù)說明(2)OpenCV提供了cv2.warpPerspective()函數(shù)來實(shí)現(xiàn)投影變換功能,其一般格式為:cv2.warpPerspective(src,M,dsize[,dst[,flags[,borderMode[,borderValue]]]])src:表示原始的圖像;M:表示投影變換矩陣;dsize:表示投影后圖像的大小;flags:表示插值方式;borderMode:表示邊界模式;borderValue:表示邊界值。效果展示圖像的投影變換效果如圖4-9所示。左側(cè)為原始圖像,右側(cè)為處理后的圖像。4.7圖像旋轉(zhuǎn)理論基礎(chǔ)一般圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn),旋轉(zhuǎn)一定的角度。旋轉(zhuǎn)后,圖像的大小一般會(huì)改變。在旋轉(zhuǎn)前
旋轉(zhuǎn)后:
理論基礎(chǔ)將坐標(biāo)系Ⅰ平移到坐標(biāo)系Ⅱ處,其中坐標(biāo)系Ⅱ的原點(diǎn)在坐標(biāo)系Ⅰ中坐標(biāo)為(a,b)。設(shè)圖像的寬度為w,高度為h,得到理論基礎(chǔ)其逆變換矩陣表達(dá)式為:按如下方法即可旋轉(zhuǎn)圖像:①根據(jù)公式(4-21),將坐標(biāo)系Ⅰ變成坐標(biāo)系Ⅱ;②根據(jù)公式(4-20),將該點(diǎn)順時(shí)針旋轉(zhuǎn)α角;③根據(jù)公式(4-22),將坐標(biāo)系Ⅱ變成坐標(biāo)系Ⅰ。在新的坐標(biāo)系下,旋轉(zhuǎn)后新圖像左上角為坐標(biāo)原點(diǎn),未旋轉(zhuǎn)時(shí)中心坐標(biāo)為(a,b),旋轉(zhuǎn)后中心坐標(biāo)為(c,d),則旋轉(zhuǎn)變換矩陣表達(dá)式為:
設(shè)未旋轉(zhuǎn)時(shí)中心坐標(biāo)為(0,0),則:
函數(shù)說明retval=cv2.getRotationMatrix2D(center,angle,scale)該函數(shù)用于得到仿射變換的轉(zhuǎn)換矩陣。center:旋轉(zhuǎn)的中心點(diǎn);angle:旋轉(zhuǎn)角度,正數(shù)為順時(shí)針旋轉(zhuǎn),負(fù)數(shù)為逆時(shí)針旋轉(zhuǎn);scale:變換尺度。效果展示圖像的旋轉(zhuǎn)變換效果如圖4-12所示。左側(cè)為原始圖像,右側(cè)為處理后的圖像。第5章圖像的灰度變換目錄5.1概述5.2二值化和閾值處理5.3灰度線性變換與分段線性變換5.3.1灰度線性變換5.3.2分段線性變換5.4灰度非線性變換5.4.1灰度對(duì)數(shù)變換5.4.2灰度指數(shù)變換5.4.3灰度冪次變換5.5灰度直方圖5.5.1灰度直方圖5.5.2直方圖正規(guī)化5.5.3直方圖均衡化5.5.4自適應(yīng)直方圖均衡化5.1概述概述灰度變換是根據(jù)某種目標(biāo)條件,按一定變換關(guān)系,逐點(diǎn)改變每一個(gè)像素灰度值的方法。目的是為了改善畫質(zhì),使圖像的顯示效果更加清晰?;叶茸儞Q可以增大圖像的動(dòng)態(tài)范圍,擴(kuò)展圖像的對(duì)比度,使圖像特征變得明顯。(1)直接對(duì)比度增強(qiáng)方法函數(shù)T(D)稱為灰度變換函數(shù)或概述2)間接對(duì)比度增強(qiáng)方法直方圖拉伸和直方圖均衡化是兩種最常見的間接對(duì)比度增強(qiáng)方法。直方圖拉伸是通過對(duì)比度拉伸對(duì)直方圖進(jìn)行調(diào)整,從而“擴(kuò)大”前景和背景灰度的差別,以達(dá)到增強(qiáng)對(duì)比度的目的,這種方法可以利用線性或非線性的方法來實(shí)現(xiàn)。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布,對(duì)圖像進(jìn)行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內(nèi)的像素?cái)?shù)量大致相同。5.2二值化和閾值處理理論基礎(chǔ)二值化處理就是把圖像分成目標(biāo)物體和背景兩個(gè)領(lǐng)域,通過固定閥值、雙固定閥值等不同的閾值化變換方法,使一幅灰度圖變成了黑白二值圖像,將所需的目標(biāo)部分從復(fù)雜的圖像背景中脫離出來。
T為指定的閾值。閾值T就像個(gè)門檻,比它大就是白,比它小就是黑。函數(shù)說明(ret,dst=cv2.threshold(src,thresh,maxval,type)ret:表示返回的閾值;dst:表示輸出的圖像;src:表示要進(jìn)行閾值分割的圖像,可以是多通道的圖像;thresh:表示設(shè)定的閾值;maxval:表示type參數(shù)為THRESH_BINARY或THRESH_BINARY_INV類型時(shí)所設(shè)定的最大值。在顯示二值化圖像時(shí),一般設(shè)置為255;type:表示閾值分割的類型。效果展示5.3灰度線性變換與分段線性變換5.3.1灰度線性變換理論基礎(chǔ)灰度的線性變化就是將圖像中所有的點(diǎn)的灰度按照線性灰度變換函數(shù)進(jìn)行變換。圖5-2灰度的線性變換函數(shù)說明(1)retval=image.max()用于返回圖像最大像素值。(2)retvalimage.min()用于返回圖像最小像素值。效果展示5.3.2分段線性變換理論基礎(chǔ)將圖像灰度區(qū)間分成兩段乃至多段,分別做線性變換稱為分段線性變換。變換后的灰度
圖5-4分段線性變換效果展示5.4灰度非線性變換5.4.1灰度對(duì)數(shù)變換理論基礎(chǔ)對(duì)數(shù)變換實(shí)現(xiàn)了圖像的灰度擴(kuò)展和壓縮的功能。它擴(kuò)展低灰度值而壓縮高灰度值,讓圖像的灰度分布更加符合人的視覺特征?;叶葘?duì)數(shù)變換公式:其中a控制曲線的垂直偏移量;b為常數(shù),描述曲線的彎曲程度。
函數(shù)說明(1)retval=np.log(x)是Numpy中的log()函數(shù),用于計(jì)算給定數(shù)組中所有元素的自然對(duì)數(shù)。retval:返回的數(shù)組;x:輸入數(shù)據(jù)。(2)retval=np.uint8(params)是Numpy包中用于轉(zhuǎn)換數(shù)據(jù)類型的函數(shù)。retval:返回uint8數(shù)據(jù)類型的圖像;params:輸入數(shù)據(jù)。效果展示5.4.2灰度指數(shù)變換理論基礎(chǔ)指數(shù)變換的作用是擴(kuò)展圖像的高灰度級(jí),壓縮低灰度級(jí)。雖然冪次變換也有這個(gè)功能,但是圖像經(jīng)過指數(shù)變換后對(duì)比度更高,高灰度級(jí)也被擴(kuò)展到了更寬的范圍
其中參數(shù)b、c控制曲線形狀,參數(shù)a控制曲線的左右位置。指數(shù)變換的曲線如圖5-8所示。圖5-8指數(shù)變換的曲線函數(shù)說明(1)retval=np.zeros(shape,dtype,order)用于創(chuàng)建一個(gè)給定形狀和類型的用0填充的數(shù)組。retval:返回一個(gè)全0的數(shù)組或矩陣;shape:數(shù)組的形狀(即寬高);dtype:數(shù)據(jù)類型,可選參數(shù);order:可選參數(shù),“C”代表行優(yōu)先,“F”代表列優(yōu)先。(3)retval=cv2.LUT(src,lut,dst=None)的作用是對(duì)輸入的src執(zhí)行查找表lut轉(zhuǎn)換。src:輸入數(shù)據(jù)array;lut:查找表,如果輸入src是多通道的,例如是B、G、R三通道的圖像,而查找表是單通道的,則此時(shí)B、G、R三個(gè)通道使用的是同一個(gè)查找表;retval:輸出數(shù)組,大小和通道數(shù)與src相同,深度depth與lut相同
效果展示5.4.3灰度冪次變換理論基礎(chǔ)與對(duì)數(shù)變換相同,冪次變換將部分灰度區(qū)域映射到更寬的區(qū)域中。當(dāng)r=1時(shí),冪次變換為線性變換。冪次變換的基本表達(dá)式為:
其中c、r均為正數(shù)。使x與y的取值范圍都在0~255之間:
理論基礎(chǔ)參數(shù)r對(duì)曲線的影響
輸出灰度值會(huì)隨著指數(shù)r對(duì)曲線的影響的增加迅速擴(kuò)大。當(dāng)指數(shù)r大時(shí),整個(gè)變換曲線近于一條垂直線。會(huì)變成最小值,產(chǎn)生的圖像幾乎全黑。效果展示5.5灰度直方圖5.5.1灰度直方圖理論基礎(chǔ)圖像的灰度直方圖表示圖像中具有某種灰度級(jí)的像素的個(gè)數(shù),反映了圖像中每種灰度出現(xiàn)的頻率。
灰度直方圖性質(zhì):(1)只反映該圖像中不同灰度值出現(xiàn)的次數(shù),而未反映某一灰度值像素所在位置。丟失了位置信息。(2)圖像與灰度直方圖之間是多對(duì)一的映射關(guān)系。理論基礎(chǔ)(3)一幅圖像各子區(qū)的灰度直方圖之和等于該圖像全圖的灰度直方圖。函數(shù)說明
matplotlib.pyplot.hist(image,BINS)BINS:表示灰度級(jí)的分組情況。image:表示原始圖像數(shù)據(jù),必須將其轉(zhuǎn)換為一維數(shù)據(jù)。
效果展示圖5-16灰度直方圖效果圖5.5.2直方圖正規(guī)化理論基礎(chǔ)
,
直方圖正規(guī)化可以調(diào)節(jié)圖像的對(duì)比度,使圖像的像素點(diǎn)分布在0~255范圍內(nèi)。函數(shù)說明cv2.normalize(src,dst,alpha,beta,norm_type,dtype)ssrc:輸入數(shù)組,可以是單通道或多通道;dst:輸出數(shù)組;alpha:歸一化后的最小值;beta:歸一化后的最大值;norm_type:用于normalize()的類型,一般令norm_type=NORM_MINMAXdtype:可選的輸出的數(shù)組類型;
效果展示5.5.3直方圖均衡化理論基礎(chǔ)直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布的直方圖分布,對(duì)圖像進(jìn)行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內(nèi)的像素?cái)?shù)量大致相同。把原始圖像通過累積分布函數(shù)轉(zhuǎn)換成新圖像后,每一種顏色的分布數(shù)量應(yīng)該是一個(gè)常數(shù):對(duì)于輸入圖像的任意一個(gè)像素p,總能在輸出圖像里有對(duì)應(yīng)的像素q使得:
所以:
理論基礎(chǔ)直方圖均衡化步驟:(1)計(jì)算原圖像的直方圖(2)計(jì)算累積直方圖(3)均衡化像素值(4)創(chuàng)建均衡化后的圖像表5-1直方圖均衡化計(jì)算過程函數(shù)說明retval=cv2.equalHist(src)src:表示輸入的待處理圖像。retval:表示直方圖均衡化后的圖像。
效果展示5.5.4自適應(yīng)直方圖均衡化理論基礎(chǔ)自適應(yīng)直方圖均衡化方法是以像素為中心,采用一個(gè)滑動(dòng)的窗口,計(jì)算其局部直方圖和相應(yīng)的累積直方圖,并進(jìn)行灰階變換,從而改變?cè)撝行南袼刂?。步驟如下:①采用滑動(dòng)模板W在圖像上移動(dòng),并且模板W的中心對(duì)應(yīng)圖像上的點(diǎn);②對(duì)滑動(dòng)窗口直方圖進(jìn)行均衡化處理,實(shí)現(xiàn)對(duì)窗口中心像素的處理③逐個(gè)像素計(jì)算,得到整幅圖像的自適應(yīng)直方圖均衡化圖像。函數(shù)說明retval=cv2.createCLAHE(clipLimit,tileGridSize)retval:生成自適應(yīng)均衡化后的圖像;clipLimit:顏色對(duì)比度的閾值,可選項(xiàng);tileGridSize:局部直方圖均衡化的模板(鄰域)大小,可選項(xiàng)。
效果展示第6章圖像平滑處理目錄6.1概述6.2噪聲消除法6.2.1二值圖像的黑白點(diǎn)噪聲濾波6.2.2消除孤立黑像素點(diǎn)6.3鄰域平均法6.3.13×3均值濾波6.3.2N×N均值濾波6.3.3超限鄰域平均法6.3.4方框?yàn)V波6.4高斯濾波6.5中值濾波6.5.1N×N中值濾波6.5.2十字型中值濾波6.5.3N×N最大值濾波6.6雙邊濾波6.72D卷積核的實(shí)現(xiàn)6.8產(chǎn)生噪聲6.8.1隨機(jī)噪聲6.8.2椒鹽噪聲6.1概述概述圖像平滑或?yàn)V波目的是消除噪聲,降低干擾,改善圖像質(zhì)量。圖像平滑常用的方法是采用區(qū)域處理,利用相鄰的像素值,進(jìn)行均值濾波或中值濾波。6.2噪聲消除法6.2.1二值圖像的黑白點(diǎn)噪聲濾波理論基礎(chǔ)理論基礎(chǔ)設(shè)當(dāng)前像素f(i,j)周圍的8個(gè)像素的平均值為a時(shí),若|f(i,j)-a|的值在127.5以上,則對(duì)f(i,j)的黑白進(jìn)行翻轉(zhuǎn),若不到127.5則f(i,j)不變。函數(shù)說明(1)retval=image.getdata(band=None)將此圖像的內(nèi)容作為一個(gè)包含像素值的序列對(duì)象返回。該序列對(duì)象是平鋪的,所以第一行的值直接跟在第0行的值之后,以此類推。retval:包含像素值的序列的對(duì)象;band:返回頻段。默認(rèn)是返回所有波段。要返回單個(gè)波段,需要傳入索引值(例如,從“RGB”圖像中獲得“R”波段,則索引值為0)。(2)retval=image.putpixel(xy,color)用于修改x,y處的像素。retval:返回一個(gè)修改后的圖像;xy:像素坐標(biāo),以(x,y)的形式給出;value:像素值。效果展示6.2.2消除孤立黑像素點(diǎn)理論基礎(chǔ)像素的4點(diǎn)鄰域和8點(diǎn)鄰域關(guān)系如圖6-2連通圖所示。
****
。*.*。*。.。*****4點(diǎn)領(lǐng)域8點(diǎn)領(lǐng)域圖6-2連通圖在4點(diǎn)鄰域的情況下,若黑像素上下左右4個(gè)像素全為白色(255),則f(i,j)也取為255。在8點(diǎn)鄰域的情況下,若黑像素的周圍8個(gè)像素全為白色(255),則f(i,j)也取為255。效果展示6.3鄰域平均法鄰域平均法是一種利用模板對(duì)圖像進(jìn)行模板操作(卷積運(yùn)算)的方法(b)5x5模版鄰域平均法也叫均值濾波,是對(duì)待處理的像素給定一個(gè)模板,該模板包括了其周圍的鄰近像素,用模板中的全體像素的均值來替代原來的像素值。均值濾波器對(duì)高斯噪聲的濾波效果較好,對(duì)椒鹽噪聲的濾波效果不好。(a)3x3模版6.3鄰域平均法效果展示6.3.13×3均值濾波理論基礎(chǔ)理論基礎(chǔ)在f(i,j)上按行(或列)對(duì)每個(gè)像素選取3×3尺寸的鄰域,并用鄰域中鄰近像素的平均灰度來置換這一像素值。函數(shù)說明retval=cv2.blur(src,ksize,anchor,borderType)retval:表示返回的均值濾波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;ksize:表示濾波卷積核的大小;anchor:表示圖像處理的錨點(diǎn),其默認(rèn)值為(-1,-1),表示位于卷積核中心點(diǎn),通常直接使用默認(rèn)值即可;borderType:表示以哪種方式處理邊界值,通常直接使用默認(rèn)值即可。效果展示圖6-8圖像3x3鄰域平均法效果圖6.3.2N×N均值濾波理論基礎(chǔ)在本程序中當(dāng)灰度圖像f中以像素f(i,j)為中心的N×N屏蔽窗口(N=3,5,7,…)內(nèi)平均灰度值為a時(shí),無(wú)條件做f(i,j)=a處理,N由用戶給定,且取N值越大,噪聲減少越明顯。但“平均”是以圖像的模糊為代價(jià)的。圖像7×7均值濾波效果6.3.3超限鄰域平均法理論基礎(chǔ)為了減少模糊效應(yīng),找到清除噪聲和邊緣模糊這對(duì)矛盾的最佳統(tǒng)一。閾值的鄰域平均法以某個(gè)灰度值T作為閾值,如果某個(gè)像素的灰度大于其鄰近像素的平均值,并超過閾值,才使用平均灰度置換這個(gè)像素灰度:(6-1)函數(shù)說明retval=cv2.cvtColor(src,code[,dstCn])retval:表示與輸入值具有相同類型和深度的輸出圖像;src:表示原始輸入圖像;code:是色彩空間轉(zhuǎn)換碼,常見的枚舉值有cv2.cvtColor_BGR2RGB、cv2.cvtColor_BGR2GRAY、cv2.cvtColor_BGR2HSV、cv2.cvtColor_BGR2YCrCb、cv2.cvtColor_BGR2HLS;dstCn:表示目標(biāo)圖像的通道數(shù)。
效果展示本例選取閾值為10。6.3.4方框?yàn)V波理論基礎(chǔ)除均值濾波之外,OpenCV還提供了方框?yàn)V波的方式。與均值濾波的不同在于,方框?yàn)V波不僅僅只計(jì)算像素均值,兩種方式選擇計(jì)算:函數(shù)說明dst=cv2.boxFilter(src,depth,ksize,anchor,normalize,borderType)dst:表示返回的方框?yàn)V波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;depth:表示處理后圖像的深度,一般使用-1表示與原始圖像相同的深度;ksize:表示濾波卷積核的大小;anchor:表示圖像處理的錨點(diǎn),其默認(rèn)值為(-1,-1),表示位于卷積核中心點(diǎn);normalize:表示是否進(jìn)行歸一化操作;borderType:表示以哪種方式處理邊界值。效果展示(a)原圖(b)5x5未歸一化方框?yàn)V波結(jié)果效果展示(c)2X2為歸一化方框?yàn)V波結(jié)果(d)5x5歸一化方框?yàn)V波結(jié)果(e)2x2歸一化方框結(jié)果6.4高斯濾波理論基礎(chǔ)在高斯濾波中,按照與中心點(diǎn)的距離的不同,賦予像素點(diǎn)不同的權(quán)重值,靠近中心點(diǎn)的權(quán)重值較大,遠(yuǎn)離中心點(diǎn)的權(quán)重值較小,在此基礎(chǔ)上計(jì)算鄰域內(nèi)各個(gè)像素值不同權(quán)重值的和函數(shù)說明dst=cv2.GassianBlur(src,ksize,sigmaX,sigmaY,borderType)dst:表示返回的高斯濾波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;ksize:表示濾波卷積核的大小,需要注意的是濾波卷積核的數(shù)值必須是奇數(shù)。sigmaX:表示卷積核在水平方向上的權(quán)重值。sigmaY:表示卷積核在垂直方向上的權(quán)重值。如果sigmaY被設(shè)置為0,則通過sigmaX的值得到,但是如果兩者都為0,則通過如下方式計(jì)算得到:
borderType:表示以哪種方式處理邊界值。效果展示6.5中值濾波中值濾波將窗口中奇數(shù)個(gè)數(shù)據(jù)按大小順序排列,處于中心位置的那個(gè)數(shù)作為處理結(jié)果。一般采用一個(gè)含有奇數(shù)個(gè)點(diǎn)的滑動(dòng)窗口,將窗口中各點(diǎn)灰度值的中值來替代指定點(diǎn)圖像中值濾波示意圖如圖6-14所示,取3×3窗口,從小到大排列:33200201202205206207208210
取中間值205,代替原來的數(shù)值202
中值濾波實(shí)現(xiàn)步驟:①將模板在圖中漫游,并將模板中心與圖中某個(gè)像素位置重合;②讀取模板下各對(duì)應(yīng)像素的灰度值;③將這些灰度值從小到大排成1列;④找出這些值里排在中間的1個(gè);(5)將這個(gè)中間值賦給對(duì)應(yīng)模板中心位置的像素。中值濾波器對(duì)椒鹽噪聲的濾波效果較好,對(duì)高斯噪聲的處理效果不好。6.5.1N×N中值濾波理論基礎(chǔ)本程序計(jì)算灰度圖像f中以像素f(i,j)為中心的N×N屏蔽窗口(N=3,5,7,…)內(nèi)灰度的中值為u,無(wú)條件做f(i,j)=u處理,n由用戶給定。函數(shù)說明在OpenCV中提供了cv2.medianBlur()函數(shù)來實(shí)現(xiàn)圖像的中值濾波。其一般格式為:retval=cv2.medianBlur(src,ksize)retval:表示返回的方框?yàn)V波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;ksize:表示濾波卷積核的大小。效果展示6.5.2十字型中值濾波理論基礎(chǔ)本程序計(jì)算灰度圖像f中以像素f(i,?j)為中心的十字形屏蔽窗口內(nèi)灰度值的中值u,無(wú)條件做f(i,?j)=u處理,N由用戶給定。效果展示6.5.3
N×N最大值濾波理論基礎(chǔ)本程序計(jì)算灰度圖像f中以像素f(i,?j)為中心的N×N屏蔽窗口(N=3,5,7,…)內(nèi)灰度的中值為u,無(wú)條件做f(i,j)=u處理,n由用戶給定。函數(shù)說明(1)retval=cv2.copyMakeBorder(src,top,bottom,left,right,borderType)用來給圖片添加邊框。retval:返回帶邊框的圖像;src:要處理的原圖;top,bottom,left,right:上下左右要擴(kuò)展的像素?cái)?shù);borderType:邊框類型,(2)min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(ret)該函數(shù)用來找出矩陣中的最大值和最小值以及對(duì)應(yīng)的坐標(biāo)位置。min_val:最小值;max_val:最大值;min_loc:最小值坐標(biāo);max_loc:最大值坐標(biāo);ret:輸入矩陣。效果展示6.6雙邊濾波理論基礎(chǔ)雙邊濾波將濾波器的權(quán)系數(shù)分解設(shè)計(jì)為空域?yàn)V波器的權(quán)系數(shù)和圖像亮度差的權(quán)系數(shù)空間距離:當(dāng)前點(diǎn)距離模板中心點(diǎn)的歐式距離Wd為灰度距離:當(dāng)前點(diǎn)距離模板中心點(diǎn)的灰度差值的絕對(duì)值Wr為雙邊濾波器:
理論基礎(chǔ)雙邊濾波卷積表示為
表示為歸一化因子,S為卷積范圍。綜合結(jié)果:①平坦區(qū)域,變化很小,差值接近于0,范圍域權(quán)重接近于1,空間域權(quán)重起作用,相當(dāng)于進(jìn)行高斯模糊;②邊緣區(qū)域,像素差值大,像素范圍域權(quán)重變大,即使距離遠(yuǎn)空間域權(quán)重小,加上像素域權(quán)重總的系數(shù)也較大,從而保護(hù)了邊緣信息。在突變的邊緣上,使用了像素差權(quán)重,所以很好的保留了邊緣。函數(shù)說明dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)dst:表示返回的雙邊濾波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;d:表示在濾波時(shí)選取的空間距離參數(shù),表示以當(dāng)前像素點(diǎn)為中心點(diǎn)的半徑,在實(shí)際應(yīng)用中一般選取5;sigmaColor:表示雙邊濾波時(shí)選取的色差范圍;sigmaSpace:表示坐標(biāo)空間中的sigma值,它的值越大,表示越多的點(diǎn)參與濾波;borderType:表示以何種方式處理邊界。效果展示
(a)原圖(b)高斯濾波(c)雙邊濾波6.7
2D卷積核的實(shí)現(xiàn)理論基礎(chǔ)2D卷積核都能方便地設(shè)置卷積核的大小和數(shù)值。函數(shù)說明dst=cv2.filter2D(src,d,kernel,anchor,delta,borderType)dst:表示返回的雙邊濾波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;d:表示處理結(jié)果圖像的圖像深度,一般使用-1表示與原始圖像使用相同的圖像深度;kernel:表示一個(gè)單通道的卷積核;anchor:表示圖像處理的錨點(diǎn),其默認(rèn)值為(-1,-1),表示位于卷積核中心點(diǎn);delta:表示修正值,可選。如果該值存在,會(huì)在濾波的基礎(chǔ)上加上該值作為最終的濾波處理結(jié)果;borderType:表示以何種情況處理邊界。效果展示(a)原圖(b)ksize=13效果展示(c)ksize=9(d)ksize=5第7章圖像邊緣銳化處理目錄7.1概述7.2圖像微分邊緣檢測(cè)7.2.1縱向邊緣檢測(cè)7.2.2橫向邊緣檢測(cè)7.2.3雙向邊緣檢測(cè)7.3常用的邊緣檢測(cè)算子7.3.1Roberts邊緣檢測(cè)算子7.3.2Sobel邊緣檢測(cè)算子7.3.3Prewitt邊緣檢測(cè)算子7.3.4Scharr邊緣檢測(cè)算子7.3.5Krisch自適應(yīng)邊緣檢測(cè)7.3.6拉普拉斯算子7.3.7高斯-拉普拉斯算子7.3.8Canny邊緣檢測(cè)7.4梯度銳化7.4.1提升邊緣7.4.2根據(jù)梯度二值化圖像7.1概述概述邊緣能勾劃出目標(biāo)物體,使觀察者一目了然;邊緣蘊(yùn)含了豐富的內(nèi)在信息是圖像識(shí)別中抽取圖像特征的重要屬性。邊緣檢測(cè)方法有微分邊緣檢測(cè)法、常用邊緣檢測(cè)算子、自適應(yīng)邊緣檢測(cè)法等。7.2圖像微分邊緣檢測(cè)邊緣是由相鄰域灰度級(jí)不同的像素點(diǎn)構(gòu)成的,若想增強(qiáng)邊緣,就應(yīng)該突出相鄰點(diǎn)間灰度級(jí)的變化。(1)圖像數(shù)據(jù):如果用右列減去左列:
(2)圖像數(shù)據(jù):
下一行減去上一行得到一條很明顯邊界。7.2.1縱向邊緣檢測(cè)理論基礎(chǔ)對(duì)灰度圖像f在縱向進(jìn)行微分操作:(7-1)這里i代表列,j代表行。該算法用如下卷積核:
7.2.2橫向邊緣檢測(cè)理論基礎(chǔ)對(duì)灰度圖像f在橫向進(jìn)行微分:
該算法用如下卷積核:
對(duì)灰度圖像在橫向方向進(jìn)行微分,圖像的橫向水平邊緣得到檢測(cè)。7.2.3雙向邊緣檢測(cè)理論基礎(chǔ)對(duì)灰度圖像在縱向和橫向進(jìn)行微分,結(jié)果圖像的縱向和橫向的邊緣得到檢測(cè)。該算法用如下卷積核:
水平(i方向)垂直(j方向)效果展示
(a)原圖(b)縱向微分
(c)橫向微分(d)雙向一次微分7.3常用的邊緣檢測(cè)算子7.3.1Roberts邊緣檢測(cè)算子理論基礎(chǔ)Roberts邊緣算子采用的是對(duì)角方向相鄰的兩個(gè)像素之差。
該算法的算子如下:(1)retval=cv2.filter2D(src,d,kernel,anchor,delta,borderType)retval:表示返回的雙邊濾波處理結(jié)果;src:表示原始圖像,該圖像不限制通道數(shù)目;d:表示處理結(jié)果圖像的圖像深度,一般使用-1表示與原始圖像使用相同的圖像深度;kernel:表示一個(gè)單通道的卷積核;anchor:表示圖像處理的錨點(diǎn),其默認(rèn)值為(-1,-1),表示位于卷積核中心點(diǎn);delta:表示修正值,可選。如果該值存在,則會(huì)在濾波的基礎(chǔ)上加上該值作為最終的濾波處理結(jié)果;borderType:表示以何種情況處理邊界;函數(shù)說明(2)retval=cv2.addWeighted(src1,alpha,src2,beta,gamma,dtype=-1))這個(gè)函數(shù)的作用是計(jì)算兩個(gè)數(shù)組(圖像陣列)的加權(quán)和,把兩張圖片疊加在一起。retval:輸出圖像;src1:第一個(gè)圖片陣列;alph
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年上海閔行中學(xué)高二上學(xué)期數(shù)學(xué)期中試卷及答案(2025.11)(含答案)
- 2025內(nèi)蒙古錫林浩特市神墨教育招聘8人備考筆試題庫(kù)及答案解析
- 2025年醫(yī)保政策知識(shí)培訓(xùn)考試試題庫(kù)(答案+解析)
- 2025中核南方新材料有限公司社會(huì)招聘2人(江西)備考考試題庫(kù)及答案解析
- 數(shù)據(jù)科學(xué)家的招聘與考核要點(diǎn)詳解
- 考核主管職業(yè)發(fā)展路徑規(guī)劃含答案
- IT系統(tǒng)工程師架構(gòu)設(shè)計(jì)面試題解析
- 企業(yè)法務(wù)專員面試題庫(kù)及答案解析
- 網(wǎng)絡(luò)安全技術(shù)專家的面試問題及答案參考
- 運(yùn)營(yíng)總監(jiān)能力素質(zhì)模型與面試題庫(kù)含答案
- 2026屆上海市青浦區(qū)高三一模數(shù)學(xué)試卷和答案
- 2026年重慶安全技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2025年寶雞麟游縣殯儀館及公益性公墓招聘(10人)筆試考試備考題庫(kù)及答案解析
- 微創(chuàng)機(jī)器人手術(shù)基層普及路徑
- 2025年黑龍江省公務(wù)員《申論(行政執(zhí)法)》試題含答案
- 2025黑龍江雞西興凱物業(yè)管理有限公司招聘區(qū)屬國(guó)有企業(yè)中層管理人員7人考試參考題庫(kù)附答案解析
- 2025江蘇鎮(zhèn)江市京口產(chǎn)業(yè)投資發(fā)展集團(tuán)有限公司招聘2人備考題庫(kù)附答案詳解(輕巧奪冠)
- 福建省福州市倉(cāng)山區(qū)2024-2025學(xué)年三年級(jí)上學(xué)期期末數(shù)學(xué)試題
- (正式版)DB32∕T 5161-2025 《塵肺病康復(fù)站服務(wù)規(guī)范》
- 旋挖鉆機(jī)地基承載力驗(yàn)算2017.7
- 財(cái)務(wù)盡職調(diào)查工作底稿(頁(yè))
評(píng)論
0/150
提交評(píng)論