




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《計算機視覺處理項目實戰》?精品課件合集?精品課件合集第X章XXXX模塊6圖像的幾何變換RGB色彩空間CONTENTS目錄0102RGB色彩空間GRAY色彩空間03HSV色彩空間RGB色彩空間RGB色彩空間中,圖像的每個像素用一個三元組表示,三元組中的3個值依次表示紅色、綠色和藍色,依次對應R、G和B通道。在cv2.cvtColor()函數中使用cv2.COLOR_BGR2RGB轉換碼可將圖像從BGR色彩空間轉換為RGB色彩空間OpenCV默認采用BGR色彩空間,它按B、G和R通道順序表示圖像。RGB色彩空間使用R(Red,紅)、G(Green,綠)和B(Blue,藍)3種基本顏色表示圖像像素。GRAY色彩空間GRAY色彩空間通常指8位灰度圖像,其顏色取值范圍為[0,255],共256個灰度級。從RGB色彩空間轉換為GRAY色彩空間的計算公式如下。Gray=0.299R+0.587G+0.114B在cv2.cvtColor()函數使用cv2.COLOR_BGR2GRAY轉換碼可將圖像從BGR色彩空間轉換為GRAY色彩空間231HSV色彩空間HSV色彩空間使用色調(Hue,也稱色相)、飽和度(Saturation)和亮度(Value)表示圖像。色調H表示顏色,用角度表示,取值范圍為[0°,360°],從紅色開始按逆時針方向計算。例如,紅色為0°、黃色為60°、綠色為120°、青色為180°、藍色為240°、紫色為300°等。飽和度S表示顏色接近光譜色的程度,或者表示光譜色中混入白光的比例。光譜色中白光的比例越低,飽和度越高,顏色越深、艷。光譜色中白光比例為0時,飽和度達到最高。飽和度的取值范圍為[0,1]。亮度V表示顏色明亮的程度,是人眼可感受到的明暗程度,其取值范圍為[0,1]。總結0102RGB色彩空間GRAY色彩空間02HSV色彩空間圖像翻轉變換CONTENTS目錄01圖像的翻轉圖像的翻轉在OpenCV中,采用函數cv2.flip()實現圖像的翻轉,可以實現在水平方向,垂直方向或兩個方向同時的翻轉,其語法結構為:cv2.flip(src,flipCode[,dst])src代表要處理的原始圖像;dst代表和原始圖像具有同樣大小,類型的目標圖像;flipCode代表旋轉類型,flipCode取值的說明如下表所示。參數值說明意義0只能是0繞著x軸翻轉正數1、2、3等任意正數繞著y軸翻轉負數-1、-2、-3等任意負數圍繞x軸、y軸同時翻轉圖像的翻轉示例:使用flip()函數對圖片進行水平翻轉、垂直翻轉以及水平垂直翻轉等操作。importcv2path=r'D:/img/5.jpg'src=cv2.imread(path)window_name='Image'image=cv2.flip(src,1)image1=cv2.flip(src,0)image2=cv2.flip(src,-1)cv2.imshow("originalimage",src)cv2.imshow(window_name,image)cv2.imshow(window_name+"1",image1)cv2.imshow(window_name+"2",image2)cv2.waitKey(0)總結01圖像的翻轉圖像仿射變換CONTENTS目錄0102圖像的仿射圖像平移仿射03圖像旋轉仿射圖像的仿射仿射變換是指圖像可以通過一系列的幾何變換來實現平移,旋轉等多種操作。該變換能夠保持圖像的平直性和平行性。平直性是指圖像經過仿射變換后,直線仍然是直線;平行線是指圖像完成仿射變換后,平行線仍然是平行線。實現的方式是通過一個2×3的變換矩陣(映射矩陣)M實現仿射變換,具體為:dst(x,y)=src(M11x+M12y+M13,M21x+M22y+M23)src圖像平移仿射采用仿射函數cv2.warpAffine()實現對圖像的仿射變換,該函數的語法格式如下:dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])dst代表仿射后的輸出圖像,該圖像的類型和原始圖像的類型相同。src代表要仿射的原始圖像。M代表一個2×3的變換矩陣。使用不同的變換矩陣,就可以實現不同的仿射變換。dsize代表輸出圖像的尺寸大小。flags代表插值方法,默認為INTER_LINEAR。當該值為WARP_INVERSEMAP時,意味著M是逆變換類型,實現從目標圖像dst到原始圖像src的逆變換。borderMode代表邊類型,默認為BORDER_CONSTANT。當該值為BORDER_TRANSPARENT時,意味著目標圖像內的值不做改變,這些值對應原始圖像內的異常值。borderValue代表邊界值,默認是0。圖像平移仿射示例:通過warpAffine()函數將圖向右平移50像素,向下平移50像素。importcv2importnumpyasnpimg=cv2.imread('D:/img/4.jpg')height,width,channel=img.shapeM=np.float32([[1,0,10],[0,1,30]])shifted=cv2.warpAffine(img,M,(width,height))cv2.imwrite('test.png',shifted)圖像旋轉仿射
在OpenCV庫中對圖片進行旋轉操作時,可以通過使用getRotationMatrix2D()函數與wrapAffine()函數兩個函數完成圖像的旋轉。
getRotationMatrix2D(center,angle,scale)值描述center旋轉中心點(cx,cy)你可以隨意指定angle旋轉的角度單位是角度逆時針方向為正方向,角度為正值代表逆時針scale縮放倍數.值等于1.0代表尺寸不變圖像旋轉仿射示例:編寫一個圖像旋轉的案例,將圖進行旋轉操作,以中心為原點,分別是逆時針旋轉30°,逆時針旋轉45°,逆時針旋轉60°。img=cv2.imread('D:/img/1.png')height,width,channel=img.shapecx=int(width/2)cy=int(height/2)center=(cx,cy)new_dim=(width,height)M=cv2.getRotationMatrix2D(center=center,angle=30,scale=1.0)rotated_30=cv2.warpAffine(img,M,new_dim)#展示原圖像plt.subplot(221)plt.imshow(img[:,:,::-1])#逆時針旋轉30°plt.subplot(222)plt.imshow(rotated_30[:,:,::-1])plt.show()總結0102圖像的仿射圖像平移仿射02圖像旋轉仿射圖像均值濾波CONTENTS目錄01均值濾波均值濾波均值濾波是指以當前點為中心,用其周圍N×N個點像素值的平均值來替代當前點的像素值。用于計算平均值的N×N個點稱為鄰域,用于濾波計算的卷積核大小與鄰域相同。例如,一個大小為3×3的鄰域如圖所示。
則卷積核為
。中心點的均值濾波值143,143比253更接近周圍的值。均值濾波OpenCV的cv2.blur()函數用于實現均值濾波,其基本格式如下。dst=cv2.blur(src,ksize[,anchor[,borderType]])參數說明如下。dst為濾波結果圖像。src為原圖像。ksize為卷積核大小,表示為(width,height),width和height通常設置為相同值,且為正數和奇數。均值濾波示例importcv2img=cv2.imread('lena2.jpg')cv2.imshow('img',img)img2=cv2.blur(img,(20,20))cv2.imshow('imgBlur',img2)cv2.waitKey(0)總結01均值濾波圖像的重映射CONTENTS目錄01圖像的重映射圖像的重映射重映射,就是把一副圖像中某個位置的像素放置到另一個圖片指定位置的過程。為了完成映射過程,需要獲取一些插值為非整數像素的坐標,因為原圖像與目標圖像的像素坐標不是一一對應的。一般情況下,我們通過重映射來表達每個像素的位置(x,y)像這樣:OpenCV內的重映射函數cv2.remap()提供了更方便、更自由的映射方式,其語法格式如下:dst=cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])dst代表目標圖像,它和src具有相同的大小和類型。src代表原始圖像。圖像的重映射map1參數它可能有兩種可能的表示對象:表示點(x,y)的第一個映射。表示CV_16SC2,CV_32FC1或CV_32FC2類型的x值。map2參數也同樣有兩種可能的表示對象,而且它會根據map1來確定表示那種圖像:當map1表示(x,y)時,這個參數不代表任何值。當map1表示(x,y)點的x值時,該值是CV_16UC1,CV_32FC1類型(x,y)點的y值。borderMode代表邊界模式。當該值為BORDER_TRANSPARENT時,表示目標圖像內的對應源圖像內奇異點(outliers)的像素不會被此函數修改。borderValue代表邊界值,當有常數邊界時使用的值,該值默認為0。Interpolation代表插值方式。圖像的重映射類型說明cv2.INTER_NEAREST最臨近插值cv2.INTER_LINEAR雙線性插值(默認方式)cv2.INTER_CUBIC三次樣條插值。首先對源圖像附近的4X4近鄰區域進行三次樣條擬合,然后將目標像素對應的三次樣條值作為目標圖像對應像素點的值cv2.INTER_AREA區域插值,根據當前像素點周邊區域的像素實現當前像素點的采樣。該方法類似最臨近插值方式Interpolation參數可取的插值方式舉例總結01圖像的重映射圖像縮放CONTENTS目錄0102縮放的概念圖像縮放縮放的概念縮放(Zoom),就是將圖片進行縮小或者放大。在圖像縮放中,可以根據設置圖像的像素大小來完成。一般在使用縮放技術時,保持著圖像進行均勻的縮小或者放大。圖像縮放OpenCV的cv2.resize()函數用于縮放圖像,其基本格式如下。dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])參數說明如下。dst表示轉換后的圖像。src表示用于縮放的原圖像。dsize表示轉換后的圖像大小。fx表示水平方向的縮放比例。fy表示垂直方向的縮放比例。interpolation表示插值方式。在轉換過程中,可能存在一些不能通過轉換算法確定值的像素,插值方式決定了如何獲得這些像素的值。圖像縮放值描述INTER_NEAREST最近鄰插值INTER_LINEAR(默認設置)INTER_AREA使用像素區域關系進行重采樣INTER_CUBIC4x4像素鄰域的雙三次插值INTER_LANCZOS48x8像素鄰域的Lanczos插值interpolation選項所用的插值方法圖像縮放示例:使用size參數實現對圖片的縮放的效果。importcv2img=cv2.imread('D:/img/1.png',cv2.IMREAD_UNCHANGED)print('原圖像大小:',img.shape)scale_percent=50#原始大小百分比width=int(img.shape[1]*scale_percent/100)height=int(img.shape[0]*scale_percent/100)dim=(width,height)size_resized=cv2.resize(img,dim,interpolation=cv2.INTER_AREA)fxfy_resized=cv2.resize(img,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_AREA)print('size參數縮放大小:',size_resized.shape)print('fxfy參數縮放大小:',fxfy_resized.shape)總結0102縮放的概念圖像縮放雙邊濾波CONTENTS目錄01雙邊濾波雙邊濾波
雙邊濾波在計算像素值的同時會考慮距離和色差信息,從而可在消除噪聲OpenCV的cv2.bilateralFilter()函數用于實現雙邊濾波,其基本格式如下。dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace[,borderType])參數說明如下。d表示以當前點為中心的鄰域的直徑,一般為5。sigmaColor為雙邊濾波選擇的色差范圍。sigmaSpace為空間坐標中的sigma值,值越大表示越多的像素點參與濾波計算。當d>0時,忽略sigmaSpace,由d決定鄰域大小;否則d由sigmaSpace計算得出,與sigmaSpace成比例。雙邊濾波示例importcv2ascvsrc=cv.imread("./image/gorilla.png")img=cv.bilateralFilter(src,25,200,200)cv.imshow("img",img)cv.waitKey()cv.destroyAllWindows()總結01雙邊濾波高斯濾波CONTENTS目錄01高斯濾波高斯濾波高斯濾波與均值濾波略有不同,它按像素點與中心點的不同距離,賦予像素點不同的權重值,越靠近中心點權重值越大,越遠離中心點權重值越小;然后根據權重值計算鄰域內所有像素點的和,將和作為中心點的像素值。OpenCV的cv2.GaussianBlur()函數用于實現高斯濾波,其基本格式如下。dst=cv2.GaussianBlur(src,ksize,sigmaX[,sigmaY[,borderType]])參數說明如下。sigmaX為水平方向上的權重值。sigmaY為垂直方向上的權重值。高斯濾波示例importcv2ascvsrc=cv.imread("./image/11.png")#高斯濾波img=cv.GaussianBlur(src,(5,5),0)cv.imshow("img",img)cv.waitKey()cv.destroyAllWindows()總結01高斯濾波2D卷積CONTENTS目錄012D卷積2D卷積均值濾波、高斯濾波、方框濾波、中值濾波和雙邊濾波等可以通過參數來確定卷積核,2D卷積可使用自定義的卷積核來執行濾波操作。OpenCV的cv2.filter2D()函數用于實現2D卷積,其基本格式如下。dst=cv2.filter2D(src,ddepth,kernel[,anchor[,delta[,borderType]]])參數說明如下。ddepth表示目標圖像dst的深度,一般使用-1表示與原圖像src一致。kernel為單通道卷積核(一維數組)。anchor為圖像處理的錨點。delta為修正值,未省略時,將加上該值作為最終的濾波結果。borderType為邊界值處理方式。2D卷積示例importnumpyasnpimportcv2img=cv2.imread('lena2.jpg')k1=np.array([[3,3,3,3,3],[3,9,9,9,3],[3,11
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【世界銀行】指導說明
- 企業與員工勞動合同范例
- 2025簡易水泥廠承包合同范本
- 2025園林綠化工程項目施工監理合同
- 2025寫字樓租賃合同業主使用
- 融資借款合同
- 2025房地產銷售代理合同模板 房產中介服務合同(附件)
- 《傾心服務贏客戶攜手共進創輝煌》課件
- 2025潛力市場銷售代理合同
- 2025監理工程師《合同管理》考點合同解除
- 2025-2030中國行李物品行業市場發展趨勢與前景展望戰略分析研究報告
- 駕校管理系統答辯
- 心理咨詢師的倫理與試題及答案
- 2024年勞務員考試題庫完美版
- 2025年商丘職業技術學院單招職業技能考試題庫附答案
- 礦山地質環境保護與土地復墾方案報告正文
- IATF16949-應急計劃評審報告
- 輸血病人的個案護理
- 企業生產安全臺賬資料填寫模板
- 江蘇省淮安市2025屆高三上學期第一次調研測試化學
- 《照明培訓手冊》課件
評論
0/150
提交評論