资源简介
基于Python3.6和Opencv3的活动轮廓模型--CV模型,见博客http://blog.csdn.net/dingkeyanlail/article/details/78689689
代码片段和文件信息
#coding:utf-8
import sys
import numpy as np
import cv2
import matplotlib.pyplot as plt
import math
from pylab import*
Image = cv2.imread(‘1.bmp‘1) #读入原图
image = cv2.cvtColor(Imagecv2.COLOR_BGR2GRAY)
img=np.array(imagedtype=np.float64) #读入到np的array中,并转化浮点类型
#初始水平集函数
IniLSF = np.ones((img.shape[0]img.shape[1])img.dtype)
IniLSF[30:8030:80]= -1
IniLSF=-IniLSF
#画初始轮廓
Image = cv2.cvtColor(Imagecv2.COLOR_BGR2RGB)
plt.figure(1)plt.imshow(Image)plt.xticks([]) plt.yticks([]) # to hide tick values on X and Y axis
plt.contour(IniLSF[0]color = ‘b‘linewidth=2) #画LSF=0处的等高线
plt.draw()plt.show(block=False)
def mat_math (intputstr):
output=intput
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if str==“atan“:
output[ij] = math.atan(intput[ij])
if str==“sqrt“:
output[ij] = math.sqrt(intput[ij])
return output
#CV函数
def CV (LSF img mu nu episonstep):
Drc = (epison / math.pi) / (epison*epison+ LSF*LSF)
Hea = 0.5*(1 + (2 / math.pi)*mat_math(LSF/epison“atan“))
Iy Ix = np.gradient(LSF)
s = mat_math(Ix*Ix+Iy*Iy“sqrt“)
Nx = Ix / (s+0.000001)
Ny = Iy / (s+0.000001)
MxxNxx =np.gradient(Nx)
NyyMyy =np.gradient(Ny)
cur = Nxx + Nyy
Length = nu*Drc*cur
Lap = cv2.Laplacian(LSF-1)
Penalty = mu*(Lap - cur)
s1=Hea*img
s2=(1-Hea)*img
s3=1-Hea
C1 = s1.sum()/ Hea.sum()
C2 = s2.sum()/ s3.sum()
CVterm = Drc*(-1 * (img - C1)*(img - C1) + 1 * (img - C2)*(img - C2))
LSF = LSF + step*(Length + Penalty + CVterm)
#plt.imshow(s cmap =‘gray‘)plt.show()
return LSF
#模型参数
mu = 1
nu = 0.003 * 255 * 255
num = 20
epison = 1
step = 0.1
LSF=IniLSF
for i in range(1num):
LSF = CV(LSF img mu nu episonstep) #迭代
if i % 1 == 0: #显示分割轮廓
plt.imshow(Image)plt.xticks([]) plt.yticks([])
plt.contour(LSF[0]colors=‘r‘linewidth=2)
plt.draw()plt.show(block=False)plt.pause(0.01)
#kernel = cv2.getStructuringElement(cv2.MORPH_RECT(5 5))#定义结构元素
#closed = cv2.morphologyEx(img cv2.MORPH_CLOSE kernel)#闭运算
#img_=cv2.cvtColor(img cv2.COLOR_BGR2RGB)
#plt.imshow(img_)
#plt.xticks([]) plt.yticks([]) # to hide tick values on X and Y axis
#plt.show()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 142182 2017-04-14 16:23 1.bmp
文件 2550 2017-12-01 18:02 CV.py
----------- --------- ---------- ----- ----
144732 2
- 上一篇:openmv定点代码
- 下一篇:Python Django VS web 表单
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论