Python+OpenCV實現圖像醫學處理


在Jupyter Notebook上使用Python+opencv實現如下圖像醫學處理。關於opencv庫的安裝可以參考:Python下opencv庫的安裝過程與一些問題匯總

 

1.實現代碼

import cv2
from skimage import morphology, io
import matplotlib.pyplot as plt

#讀取原圖片
img1=cv2.imread("vas0.bmp")
cv2.imshow("img1", img1)
#閾值分割 img2=cv2.adaptiveThreshold(cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY),255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,3)#自適應閾值分割 cv2.imshow('img2', img2)
#圖像反色 h,w = img2.shape img3=img2.copy() for i in range(h): for j in range(w): img3[i,j] = 255-img3[i,j] cv2.imshow('img3', img3)
#圖像擴展 img4 = cv2.copyMakeBorder(img3,1,1,1,1,cv2.BORDER_REFLECT) cv2.imshow('img4', img4)
#去除小面積區域 contours,hierarch=cv2.findContours(img4,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)#輪廓提取 for i in range(len(contours)): area = cv2.contourArea(contours[i]) #計算輪廓所占面積 if area < 200: #將area小於閾值區域填充背景色,OpenCV讀出的是BGR值 cv2.drawContours(img4,[contours[i]],-1, (0,0,0), thickness=-1) #原始圖片背景BGR值為(0,0,0) cv2.imshow('img5',img4)
#進一步細化,去除較小面積區域,保留最大連通區域 img5=img4.copy() contours1,hierarchy = cv2.findContours(img5, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) for i in range(len(contours1)): area1 = cv2.contourArea(contours1[i]) print(area1) if area1 ==214.5: cv2.drawContours(img5,[contours1[i]],-1, (0,0,0), thickness=-1) elif area1==363.0: cv2.drawContours(img5,[contours1[i]],-1, (0,0,0), thickness=-1) cv2.imshow('img6',img5)
#實施骨架算法 img6=img5.copy() cv2.threshold(img6,80,1,0,img6) img7 =morphology.skeletonize(img6) plt.imshow(img7,cmap=plt.cm.gray) plt.axis('off') plt.show()
#圖像反色 h1,w1 = img7.shape img8=img7.copy() for i in range(h1): for j in range(w1): img8[i,j] = 1-img8[i,j] plt.imshow(img8,cmap=plt.cm.gray) plt.axis('off') plt.show()
#邊緣提取 img9 = cv2.Canny(img5,80,255) cv2.imshow("img9",img9)
#圖像反色 h2,w2 = img9.shape img10=img9.copy() for i in range(h2): for j in range(w2): img10[i,j] = 255-img10[i,j] cv2.imshow("img10",img10) cv2.waitKey(0)

 

2.運行結果

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM