资源简介
基于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 表单
相关资源
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
评论
共有 条评论