zoukankan      html  css  js  c++  java
  • python OpenCV 实现图片的医学处理

    机器视觉第八次实验

    一、实验目的

    通过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()

    图片1.png

    图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)

    图片2.png

    图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.png

    图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()

    图片4.png

    图3.4扩展后的图像

    5)去除图片较小面积的区域并保存

    实例代码:

    #去除较小面积的区域
    
    img3 = morphology.remove_small_holes(th,200)
    
    plt.imshow(img3,cmap=plt.cm.gray)
    
    plt.axis('off')
    
    plt.show()

    图片5.png

    图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()

    图片6.png

    图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)

    图片7.png

    图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)

    图片8.png 

    图3.8图片反色

    四、实验中的错误

    1)安装我们所需要的库,不然会报错,我首先使用pip install skimage,这样安装出来的会报错;

    图片9.png 

    图4.1.1安装scikit-image库出错案例

    百度了一下以后我发现这个库的大名是叫scikit-image,我们就使用pip install scikit-image。

    图片10.png

    图4.1.2解决安装scikit-image库出错的问题

    五、实验总结

    学习了OpenCV的医学处理技术,提升了自己的能力。

     ​

  • 相关阅读:
    web开发(六) EL表达式
    web开发(五) JSP详解(四大作用域九大内置对象等)
    web开发(四) 一次性验证码的代码实现
    Netty4
    Android Fragment
    Android 6.0 双向通话自动录音
    安卓
    SpringMVC + Spring + Mybatis+ Redis +shiro以及MyBatis学习
    Spring 3 AOP 概念及完整示例
    Java并发之CountDownLatch、CyclicBarrier和Semaphore
  • 原文地址:https://www.cnblogs.com/CJR-QYF/p/12701203.html
Copyright © 2011-2022 走看看