機器視覺第八次實驗
一、實驗目的
通過OpenCV第八次進行實驗,對圖片進行醫學處理。
二、實驗內容
對圖片進行醫學處理。
三、實驗過程
我使用的是python語言+openCV對圖片進行醫學處理的功能。實驗過程我們需要導入的庫有import cv2;from skimage import morphology, io;import matplotlib.pyplot as plt
1)讀取圖片
我們采用直接讀取圖片並直接將其灰度化,使用imread()函數讀取圖片,
代碼實例:
img = cv2.imread("vas0.bmp",0) cv2.imshow("img",img) cv2.waitKey()
圖3.1圖片讀取
2)閾值分割
使用adaptiveThreshold()函數進行計算:
實例代碼:
#閾值分割 th=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2) cv2.imshow('th', th) cv2.waitKey(0)
圖3.2閾值分割后的圖片
3)圖片反色
輸入的代碼:
#圖像反色 img1 = th.copy() cv2.threshold(th,80,255,0,th) for i in range(0,th.shape[0]): for j in range(0,th.shape[1]): img1[i,j] = 255-th[i,j] # cv2.imshow("img1",img1) # cv2.waitKey(0) plt.imshow(img1,cmap=plt.cm.gray) plt.axis('off') plt.show()
圖3.3反色后的圖片
4)圖像擴展
實例代碼:
#圖像擴展 img2 = cv2.copyMakeBorder(img1,1,1,1,1,cv2.BORDER_REFLECT) plt.imshow(img2,cmap=plt.cm.gray) plt.axis('off') plt.show()
圖3.4擴展后的圖像
5)去除圖片較小面積的區域並保存
實例代碼:
#去除較小面積的區域 img3 = morphology.remove_small_holes(th,200) plt.imshow(img3,cmap=plt.cm.gray) plt.axis('off') plt.show()
圖3.5.1去除較小面積的區域(1)
img3 = morphology.remove_small_holes(th,1000) plt.imshow(img3, cmap=plt.cm.gray) plt.axis('off') plt.savefig("jpg") plt.show()
圖3.5.2去除較小面積的區域(2)
6)細化圖片
實例代碼:
image = cv2.imread("jpg.png") #實施骨架算法 image1 =morphology.skeletonize(image) #顯示結果 plt.imshow(image1) plt.axis('off') plt.show()
7)邊緣檢測
實例代碼:
#邊緣檢測 image2 = cv2.Canny(image,80,255) cv2.imshow("image2",image2) cv2.waitKey(0)
圖3.7邊緣檢測的圖片
8)圖片反色
實例代碼:
#圖片反色 image3 = image2.copy() for i in range(0,image2.shape[0]): for j in range(0,image2.shape[1]): image3[i,j] = 255-image2[i,j] cv2.imshow("image3",image3) cv2.waitKey(0)
圖3.8圖片反色
四、實驗中的錯誤
1)安裝我們所需要的庫,不然會報錯,我首先使用pip install skimage,這樣安裝出來的會報錯;
圖4.1.1安裝scikit-image庫出錯案例
百度了一下以后我發現這個庫的大名是叫scikit-image,我們就使用pip install scikit-image。
圖4.1.2解決安裝scikit-image庫出錯的問題
五、實驗總結
學習了OpenCV的醫學處理技術,提升了自己的能力。