Opencv+Python实现医学图片处理
利用Opencv+python实现下图的处理
一、实验目的
原图
处理结果如下图
二、实现代码
import cv2
import numpy as np
from skimage import morphologyimg1 = cv2.imread("F:\\vas1.bmp")
cv2.imshow('img1',img1)
#自适应阈值分割
gray= cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img2=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,3)
cv2.imshow('img2',img2)
#反色
def inverse_color(img):height,width = img.shapeimg2 = img.copy()for i in range(height):for j in range(width):img2[i,j] = (255-img[i,j])return img2
img3 = inverse_color(img2)
cv2.imshow('img3',img3)
#对图像进行扩展
img4 = cv2.copyMakeBorder(img3,1,1,1,1,cv2.BORDER_REFLECT)
cv2.imshow('img4',img4)
#去除小于指定尺寸的区域
img5 = morphology.remove_small_holes(img2,150)
img_tmp1 = np.uint8(img5)*255
cv2.imshow('img5',inverse_color(img_tmp1))
img6 = morphology.remove_small_holes(img5,1000)
img6 = np.uint8(img6)*255
img7 = inverse_color(img6)
cv2.imshow('img6',inverse_color(img6))#图像细化
img = img7.copy()
img = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
gray= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img=cv2.adaptiveThreshold(gray,1,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,3)
img_sk = morphology.skeletonize(img)
img = np.uint8(img_sk)*255
cv2.imshow('img8',inverse_color(img))#边界提取
img9 = cv2.Canny(inverse_color(img6),75,200)
cv2.imshow('img9',img9)
cv2.imshow('img10',inverse_color(img9))
cv2.waitKey()
cv2.destroyAllWindows()
三、运行结果如下
局部自适应动态阈值分割
反色
扩展
去除小的区域
再次去除
边缘提取
反色
四、遇到的问题及解决办法
(1)在运行过程中出现错误,如下图
解决方法:
在进行自适应阈值分割时图像不是8位灰度图像,把图像改为彩色图。
gray= cv.cvtColor(src, cv.COLOR_BGR2GRAY)
(2)在进行图片细化时,出现错误
解决方法:
将cv2.adapttiveThreshold()函数中的255改成1,因为skeletonize需要的是0和1,而不是0和255
(3)在显示经过scimage的morphology模块进行去除某些区域时,无法显示去除后的图像
解决办法:
这种情况是因为在进行去除时,得到的结果是一个boolean数组,要转换为0-255才能显示,img6 = np.uint8(img6)*255可将数据从uint16转换为uint8,把0-1转换为0-255
(4)在利用morphology.skeletonize()进行图片的细化时,出现错误,提取结果如下
正确结果应该如下
这个问题还未解决
Opencv+Python实现医学图片处理相关推荐
- 【OpenCV+Python实现医学影像拼接(一)】
** OpenCV+Python实现医学影像拼接(一) ** 内容仅供参考 首先是准备拼接的图片,(由于环境原因,本人裁剪的) 原图片为 我的思路是一二先拼接,三四再拼接,拼接后图片如下: 与原图像对 ...
- OpenCV+python:读取图片
1,源码: import cv2 as cv #导入OpenCV库 import numpy as np #导入numpy科学计算包 print("--------- Python + Op ...
- OpenCV+python:读取图片和视频详细信息
1,源代码 import cv2 as cv import numpy as npdef video_demo(): #定义读取视频信息的函数capture = cv.VideoCapture(0) ...
- python如何实现找图_利用OpenCV和Python实现查找图片差异
使用OpenCV和Python查找图片差异 flyfish 方法1 均方误差的算法(Mean Squared Error , MSE) 下面的一些表达与<TensorFlow - 协方差矩阵&g ...
- python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...
- python读取.nii.gz文件并展示医学图片
python读取.nii.gz文件并展示医学图片 注意细节 我的数据集格式 展示图片 补充 注意细节 第一次做医学图像相关的内容,拿到数据集却不会用,搞了半天终于可以打开显示了,必须写一个给跟我一样的 ...
- python 找出图片中的差异点,python opencv对目录下图片进行去重的技巧
使用python opencv对目录下图片进行去重的方法 版本: 平台:ubuntu 14 / I5 / 4G内存 python版本:python2.7 opencv版本:2.13.4 依赖: 如果系 ...
- python opencv显示图片一闪而过_解决Opencv+Python cv2.imshow闪退问题
Opencv+Python cv2.imshow闪退 # 读入原始图像 origineImage = cv2.imread('./pic/6.jpeg') # 图像灰度化 # image = cv2. ...
- python图片转视频加特效_使用Python opencv实现视频与图片的相互转换
因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/Pyc ...
- OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序
OpenCV+Python 彩色图片的 BGR.灰度图.HSV分量图显示的程序 介绍 OpenCV+Python 使用openCV中的split()函数和 cvtColor()函数提取一张彩色图片的B ...
最新文章
- 信息理论基础 周炯槃 常迥
- 莫利定理的超直观演示!
- 【HDU - 1022】Train Problem I (栈模拟,水题,思维)
- 467python教程_Magnus Lie Hetland的《Python基础教程(第3版)》自学笔记(持续更新中)...
- 十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码
- Python网络编程基础
- 化工企业数据分析平台项目之应收款分析
- python中的append()有什么功能_在python中append()函数能做什么
- Java 并发 —— 读写锁(ReadWriteLock)
- asp.net搜索关键词高亮显示函数
- 关于联想键盘,如何去除fn 键 联想官方解决方法
- 常用的网络操作系统有哪些?它们各具有什么特点?
- 《弃子长安》第十六章 道阳心经
- 2、图片亮度,对比度,饱和度,明度调整 transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
- Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
- 〖Python接口自动化测试实战篇⑦〗- 接口抓包工具 Fiddler 的使用
- 在EXCEL中插入超级链接
- 计算机平均值的快捷键,excel求平均值快捷键
- HTML+CSS+JS实现3D爱心跳动特效
- html5文本框里插图片文字,word应用教程:在文本框内插入图片
热门文章
- win7电脑访问共享提示“您可能没有权限使用网络资源”的解决技巧--win10专业版
- 39.JavaScript中Promise的基本概念、使用方法,回调地狱规避、链式编程
- 联想用u盘重装系统步骤_联想电脑怎样重新安装系统方法步骤详细教程 - 系统家园...
- java弹跳小球程序_用java实现跳动的小球示例代码
- 服务器的日常维护需要做什么?
- 什么是视距传播(LOS propagation)及如何验证微波链路是否具有清晰的视线
- chmod 权限详细解析(rw)
- 互联网产品经理职责及所需能力
- java枚举后面括号是什么意思_[Java] Java自定义枚举常量后括号的作用
- c++的两个冒号::四个点是什么意思,什么作用呢?