chan-vese模型
Python--level set (水平集)和 chan-vese模型
level set :https://www.zhihu.com/question/22608763?sort=created
https://blog.csdn.net/xiangyong58/article/details/11876019
chan-vese模型(公式推导):https://blog.csdn.net/zhangchen1003/article/details/48930377
水平集(CV模型)代码:
- import cv2
- from pylab import*
- Image = cv2.imread('02.jpg', 1) # 读入原图
- image = cv2.cvtColor(Image, cv2.COLOR_BGR2GRAY)
- img = np.array(image, dtype=np.float64) # 读入到np的array中,并转化浮点类型
- # 初始水平集函数
- IniLSF = np.ones((img.shape[0], img.shape[1]), img.dtype)
- IniLSF[300:320, 300:320] = -1
- IniLSF = -IniLSF
- # 画初始轮廓
- Image = cv2.cvtColor(Image, cv2.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(intput, str):
- output = intput
- for i in range(img.shape[0]):
- for j in range(img.shape[1]):
- if str == "atan":
- output[i, j] = math.atan(intput[i, j])
- if str == "sqrt":
- output[i, j] = math.sqrt(intput[i, j])
- return output
- # CV函数
- def CV(LSF, img, mu, nu, epison, step):
- 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)
- Mxx, Nxx = np.gradient(Nx)
- Nyy, Myy = 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(1, num):
- LSF = CV(LSF, img, mu, nu, epison, step) # 迭代
- 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)
为什么上传图片这么麻烦。
一、文章参考
Chan T F, Vese L. Active contours without edges[J]. Image processing, IEEE transactions on, 2001, 10(2): 266-277.
1
二、公式推导过程
---------------------
作者:jonson_zc
来源:CSDN
原文:https://blog.csdn.net/zhangchen1003/article/details/48930377
版权声明:本文为博主原创文章,转载请附上博文链接!
转载于:https://www.cnblogs.com/shuimuqingyang/p/10860719.html
chan-vese模型相关推荐
- 【今日CV 计算机视觉论文速览 第133期】Wed, 19 Jun 2019
今日CS.CV 计算机视觉论文速览 Wed, 19 Jun 2019 Totally 39 papers ?上期速览✈更多精彩请移步主页 ?????? ?小尝试:?留言 邮箱地址及时获悉论文速览 In ...
- Vuforia开发完全指南
作者:Mac玩家 原文:Vuforia开发完全指南(二)--- 不懂编程也能做AR程序 链接:https://www.jianshu.com/p/5871935aba02 來源:简书 简书著作权归作者 ...
- 荔枝hsv空间图像分割程序matlab,基于稀疏场水平集的荔枝图像分割算法_毛亮
第4期毛亮等:基于稀疏场水平集的荔枝图像分割算法349 从表中可知,本文算法在计算速度上接近标准模糊C 均值聚类算法,优于水平集方法.因此,与水平集方法相比,本文算法有着更好的分割性能和实时性. 4结 ...
- unity怎么制作云飘动_Unity3D 实用技巧 - 分享实时飘动动画插件
其实在游戏制作里面,实现角色头发衣服飘带等实时飘动,有很多的物理模拟插件,无论是通过骨骼驱动模拟,还是布料的的物理模拟,都有很多现成的插件能快速实现.小编针对实现实时飘动动画插件进行了简单的资源收集调 ...
- ITK:多相Chan和Vese稀疏场水平集分割
ITK:多相Chan和Vese稀疏场水平集分割 内容提要 C++实现代码 内容提要 多相Chan和Vese稀疏场水平集分割 C++实现代码 #include "itkScalarChanAn ...
- ITK:单相Chan和Vese稀疏场水平集分割
ITK:单相Chan和Vese稀疏场水平集分割 内容提要 C++实现代码 内容提要 单相Chan和Vese稀疏场水平集分割 C++实现代码 #include "itkScalarChanAn ...
- ITK:单相Chan和Vese密集域水平集分割
ITK:单相Chan和Vese密集域水平集分割 内容提要 C++实现代码 内容提要 单相Chan和Vese密集域水平集分割 C++实现代码 #include "itkScalarChanAn ...
- Unity官方代言角色Unity Chan(Unity娘/优妮蒂/ユニティちゃん)模型免费下载
Unity Chan Unity Chan就是下面这个角色啦 游戏引擎研发商Unity Technologies日本分公司Unity Technologie Japan日前宣布,自2014年4月7日起 ...
- Go SCP 通信顺序进程模型chan通道
目录 channer定义 写入 chan 读取 chan 关闭 chan 示例 Go语言实现了两种并发模型,一种是我们熟悉的线程与锁并发模型,他是基于共享内存实现的.另一种是Go语言中倡导使用的SCP ...
- [家里蹲大学数学杂志]第054期图像分割中的无边缘活动轮廓模型
$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 4.4 节的详细论述. $\bf 关键词$: 图像分割; 活动轮廓模型; matlab 编程 1 模型的建立 在 ...
最新文章
- MySQL面试题 | 附答案解析(十五)
- Hi,欢迎加入量子位AI社群
- 这个医疗AI准确率突破天际,招来了铺天盖地的质疑
- 修改 IIS 队列长度
- java 程序的初始化顺序是怎样的?
- 140_Power BIPower Pivot之降维展示同类型比较
- 【架构设计】Android:配置式金字塔架构
- c语言switch的作用域,你真的懂switch吗?聊聊switch语句中的块级作用域
- MySQL-----pymysql模块
- 让LYNC 2010 登录OCS 2007 R2
- python 正则表达式匹配数字或者小数点_Python 正则表达式 匹配小数
- 常用sql server 语句
- Ubuntu 14.04 安装xvid编码器
- 微信小程序 js部分语法
- Android自定义九宫格图案解锁
- python两个表格相同数据筛选_如何将多个表格中数据筛选汇总在一个表格里?
- Python基础教程目录
- opus 源码下载 以及 相关资料
- 【重要】黑苹果安装之 BIOS 设置篇
- 【精】iOS知识树,知识点(包括对象、Block、消息转发、GCD、运行时、runloop、动画、Push、KVO、tableview,UIViewController、提交AppStore)
热门文章
- web页面导航栏自适应问题
- 罗技G500 拆机更换微动
- 「镁客·请讲」exands卢国鸣:商业WIFI,看似很简单实际非常难
- 《奥多比 PS CS4 官方中文版》(Adobe Photoshop CS4 Extended)繁体中文/简体中文/韩文
- 图解TCP/IP 学习笔记一
- Java实验2 猜数字游戏
- kpca故障诊断matlab,PCA_kpca 利用pca和 对CSTR过程进行故障诊断,包括7个噪声及开环和串 制 matlab 263万源代码下载- www.pudn.com...
- 现实迷途 第十五章 损兵折将
- 2021重庆江北中学高考成绩查询,重庆江北中学
- RTT之硬件定时器使用