[家里蹲大学数学杂志]第054期图像分割中的无边缘活动轮廓模型

简介: $\bf 摘要$: 本文给出了王大凯等编的《图像处理中的偏微分方程方法》第 4.4 节的详细论述. $\bf 关键词$: 图像分割; 活动轮廓模型; matlab 编程   1 模型的建立 在图像中, 对象与背景的区别有时表现为平均灰度的明显不同.

$\bf 摘要$: 本文给出了王大凯等编的《图像处理中的偏微分方程方法》第 4.4 节的详细论述.

$\bf 关键词$: 图像分割; 活动轮廓模型; matlab 编程

 

1 模型的建立

在图像中, 对象与背景的区别有时表现为平均灰度的明显不同. 由于这类图像既没有明显的边缘 ($\sev{\n I}$ 大), 也缺乏明显的纹理 (texture, 灰度变化有一定的规律, 并形成一定的 patten), 故测地线活动轮廓 (geodesic active contour, GAC, 或 snake) 模型不能成功地实现图像分割.

为此, T. Chan 与 L. Vese 提出了如下的能量泛函: $$\bee\label{1:E} E(c_1,c_2,C)\equiv \mu\oint_C\rd s +\lambda_1\iint_{\Omega_1} (I-c_1)^2\rd x\rd y +\lambda_2\iint_{\Omega_2} (I-c_2)^2\rd x\rd y, \eee$$ 其中

(1) $\mu>0$, $\lambda_1$, $\lambda_2>0$ 是各比分的权重;

(2) 曲线 $C$ 是简单的, 并将这个图像区域 $\Omega$ 分为内外两部分, 分别记为 $\Omega_1$, $\Omega_2$;\

(3) $c_1$, $c_2$ 是两常数, 表分片常数图像.

此模型的特点是

(1)    一方面使边界曲线最短;

(2)    另一方面使背景 $(\Omega_2)$ 与对象 $(\Omega_1)$ 区别开来 (\eqref{1:E} 中的后两项). 这称作无边缘活动轮廓 (active contour without edge, C-V, 或 GAR) 模型.

引入 $\delta$ 函数, 将 $E$ 写成 $$\bee\label{1:Eu}\bea E(c_1,c_2,u) &=\mu\iint_\Omega \delta(u)\sev{\n u}\rd x\rd y\\ &\quad+\lambda_1\iint_{\Omega_1}(I-c_1)^2\sez{1-H(u)}\rd x\rd y +\lambda_2\iint_{\Omega_2}(I-c_2)^2H(u)\rd x\rd y, \eea\eee$$ 其中

(1) $\delta(\cdot)$ 为 Dirac $\delta$ 函数, 其有光滑逼近元 $$\bex \delta_\ve(x)=\frac{1}{\pi}\cdot\frac{\ve}{x^2+\ve^2}\quad \sex{0<\ve\ll 1}; \eex$$

(2) $\sev{\n u}$ 是变换之 Jacobian;

(3) $H(\cdot)$ 是 Heaviside 函数: $$\bex H(z)=\left\{\ba{ll} 1,&z\geq 0,\\ 0,&z<0, \ea\right. \eex$$ 其有光滑逼近元 $$\bex H_\ve(z)=\frac{1}{2}+\frac{1}{\pi}\arctan \frac{z}{\ve}, \eex$$ 且 $$\bex H'(z)=\delta(z),\quad\mbox{ 在 }\mathcal{D}'(\bbR)\mbox{ 上}. \eex$$   

(4) 在函数 $u$ 固定的条件下, 由 $$\bex \iint_{\Omega_1} (I-c_1)^2\rd x\rd y =c_1^2\iint_{\Omega_1}\rd x\rd y -2c_1\iint_{\Omega_1}I\rd x\rd y +\iint_{\Omega_1}I^2\rd x\rd y, \eex$$ $$\bex \iint_{\Omega_2} (I-c_2)^2\rd x\rd y =c_2^2\iint_{\Omega_2}\rd x\rd y -2c_2\iint_{\Omega_2}I\rd x\rd y +\iint_{\Omega_2}I^2\rd x\rd y, \eex$$ 及二次函数的性质知当且仅当 $$\bee\label{1:c1c2} c_1=\frac{\iint_{\Omega_1}I\rd x\rd y}{\iint_{\Omega_1}\rd x\rd y},\quad c_2=\frac{\iint_{\Omega_2}I\rd x\rd y}{\iint_{\Omega_2}\rd x\rd y} \eee$$ 时, $E$ 取得最小.

现在, 写出 \eqref{1:Eu} 的变分 (variation) 如下 $$\bex \frac{\delta E}{\delta u} =-\mu \delta(u)\Div\sex{\frac{\n u}{\sev{\n u}}} -\lambda_1\delta(u)(I-c_1)^2 +\lambda_2\delta(u)(I-c_2)^2. \eex$$

从而梯度下降流为 $$\bee\label{1:gdf} \frac{\p u}{\p t} =-\frac{\delta E}{\delta u} =\mu \delta(u)\Div\sex{\frac{\n u}{\sev{\n u}}} +\lambda_1\delta(u)(I-c_1)^2 -\lambda_2\delta(u)(I-c_2)^2. \eee$$

2.数值算法

为计算方便, 须离散化, 而用 $\delta_\ve$ 替代 $\delta$. 这样, 用半隐式 (semi-implicit) 方案: $$\bee\label{2:scheme} u^{n+1}_{ij} =u^n_{ij} +\tau \delta_\ve(u^n_{ij}) \sez{\mu Q(u^{n+1}_{ij})+(I_{ij}-c^n_1)^2-(I_{ij}-c^n_2)^2}, \eee$$ 其中已选 $\lambda_1=\lambda_2=1$, $Q(u^{n+1}_{ij})$ 采用向前向后差分相结合的格式: $$\bex Q(u_{ij}) &=D^{(+)}_x\sex{g_{ij}D^{(-)}_x u_{ij}} +D^{(+)}_y\sex{g_{ij}D^{(-)}_yu_{ij}}\quad\sex{g_{ij}=\frac{1}{\sev{\n u}_{ij}}}\\ &=g_{i,j+1}D^{(-)}_xu_{i,j+1} -g_{i,j}D^{(-)}_xu_{ij} +g_{i+1,j}D^{(-)}_yu_{i+1,j} -g_{ij}D^{(-)}_yu_{ij}\\ &=g_{i,j+1}\sex{u_{i,j+1}-u_{ij}} -g_{ij}\sex{u_{ij}-u_{i,j-1}}\\ &  +g_{i+1,j}\sex{u_{i+1,j}-u_{ij}} -g_{ij}\sex{u_{ij}-u_{i-1,j}}\\ &=\sez{g_{i,j+1}u_{i,j+1}+g_{ij}u_{i,j-1} +g_{i+1,j}u_{i+1,j}+g_{ij}u_{i-1,j}}\\ & -\sex{g_{i,j+1}+g_{ij}+g_{i+1,j}+g_{i,j}}u_{ij}, \eex$$ 且为保证计算的稳定性, 我们采用半隐式方案求解: $$\bee\label{2:Q}\bea Q(u^{n+1}_{ij}) &=\sez{g^n_{i,j+1}u^n_{i,j+1}+g^n_{ij}u^n_{i,j-1} +g^n_{i+1,j}u^n_{i+1,j}+g^n_{ij}u^n_{i-1,j}}\\ & +\sex{g^n_{i,j+1}+g^n_{ij}+g^n_{i+1,j}+g^n_{i,j}}u^{n+1}_{ij},  \eea\eee$$ 其中 $g^n_{ij}$ 的选取如下 (依赖于其对应的 $u_{ij}$, 一个方向上用向前或向后差分, 另一个方向上用中心差分):

(1)$u^n_{i,j+1}$ 的系数 $$\bex C_1\equiv g_{i,j+1} =\frac{1}{\sqrt{\sex{ u_{i,j+1}-u_{ij} }^2+\sex{\frac{ u_{i+1,j+1}-u_{i-1,j+1} }{2}}^2}}; \eex$$

(2)$u^n_{i,j-1}$ 的系数 $$\bex C_1\equiv g_{i,j+1} =\frac{1}{\sqrt{\sex{ u_{ij}-u_{i,j-1} }^2+\sex{\frac{ u_{i+1,j-1}-u_{i-1,j-1} }{2}}^2}}; \eex$$

(3)$u^n_{i+1,j}$ 的系数 $$\bex C_1\equiv g_{i,j+1} =\frac{1}{\sqrt{\sex{ u_{i+1,j}-u_{ij} }^2+\sex{\frac{ u_{i+1,j+1}-u_{i+1,j-1} }{2}}^2}}; \eex$$

(4)$u^n_{i-1,j}$ 的系数 $$\bex C_1\equiv g_{i,j+1} =\frac{1}{\sqrt{\sex{ u_{ij}-u_{i-1,j} }^2+\sex{\frac{ u_{i-1,j+1}-u_{i-1,j-1} }{2}}^2}}. \eex$$ 把 \eqref{2:Q} 代入 \eqref{2:scheme}, 得 $$\bex & \sez{1+\mu\tau \delta_\ve(u^n_{ij})} u^{n+1}_{ij}=u^n_{ij} +\tau \delta_\ve(u^n_{ij})\cdot\\ & \quad\cdot \sez{ \mu\sex{ C_1u^n_{i,j+1} +C_2u^n_{i,j-1} +C_3u^n_{i+1,j} +C_4u^n_{i-1,j} } +(I_{ij}-c^n_1)^2 -(I_{ij}-c^n_2)^2 }, \eex$$ 其中 $c^n_1$, $c^n_2$ 由 \eqref{1:c1c2} 离散化而来: $$\bex c^n_1 =\frac{ \sum_{ij}I_{ij}\sez{1-H_\ve\sex{u^n_{ij}}} }{ \sum_{ij}\sez{1-H_\ve\sex{u^n_{ij}}} },\quad c^n_2 =\frac{ \sum_{ij}I_{ij}H_\ve\sex{u^n_{ij}} }{ \sum_{ij}H_\ve\sex{u^n_{ij}} }. \eex$$

 

3. 数值试验

选取 $\ve=1.0$, $\mu=250$, $\tau=0.1$, 则通过如下的 matlab 代码: clear all;

close all;

clc;

 

Img=imread('brain.bmp');

Img=double(RGB2gray(Img));

 

figure(1);

imshow(uint8(Img));

 

[ny,nx]=size(Img);%获取图像大小

 

%%将初始曲线设为圆

%初始圆的圆心

c_i=floor(ny/2);

c_j=floor(nx/2);

%初始圆的半径

r=c_i/3;

 

%%初始化u为距离函数

u=zeros([ny,nx]);

for i=1:ny

    for j=1:nx

        u(i,j)=r-sqrt((i-c_i).^2+(j-c_j).^2);

    end

end

 

%%将初始圆形曲线叠加在原始图片上

figure(2);

imshow(uint8(Img));

hold on;

[c,h]=contour(u,[0 0],'r');

 

%%初始化参数

epsilon=1.0;%Heaviside函数参数设置

mu=250;%弧长的权重

dt=0.1;%时间步长

nn=0;%输出图像个数初始化

 

%%迭代计算开始

for n=1:1000

    %%计算正则化的Heaviside函数

    H_u=0.5+1/pi.*atan(u/epsilon);

    %%由当前u计算出参数c1,c2

    c1=sum(sum((1-H_u).*Img))/sum(sum(1-H_u));

    c2=sum(sum(H_u.*Img))/sum(sum(H_u));

    %%用当前c1,c2更新u

    delta_epsilon=1/pi*epsilon/(pi^2+epsilon^2);%delta函数的正则化

    m=dt*delta_epsilon;%临时参数m存储时间步长与delta函数的乘积

    %%计算四邻点的权重

    C1=1./sqrt(eps+(u(:,[2:nx,nx])-u).^2

        +0.25*(u([2:ny,ny],:)-u([1,1:ny-1],:)).^2);

    C2=1./sqrt(eps+(u-u(:,[1,1:nx-1])).^2

        +0.25*(u([2:ny,ny],[1,1:nx-1])-u([1,1:ny-1],[1,1:nx-1])).^2);

    C3=1./sqrt(eps+(u([2:ny,ny],:)-u).^2

        +0.25*(u([2:ny,ny],[2:nx,nx])-u([2:ny,ny],[1,1:nx-1])).^2);

    C4=1./sqrt(eps+(u-u([1,1:ny-1],:)).^2

        +0.25*(u([1,1:ny-1],[2:nx,nx])-u([1,1:ny-1],[1,1:nx-1])).^2);

    C=1+mu*m.*(C1+C2+C3+C4);

    u=(u+m*

        (mu*(C1.*u(:,[2:nx,nx])+C2.*u(:,[1,1:nx-1])

            +C3.*u([2:ny,ny],:)+C4.*u([1,1:ny-1],:))

        +(Img-c1).^2-(Img-c2).^2)

       )./C;

    %%每运行两百次显示曲线和分片常数曲线

    if mod(n,200)==0

        nn=nn+1;

        f=Img;

        f(u>0)=c1;

        f(u<0)=c2;

        figure(nn+2);

        subplot(1,2,1);imshow(uint8(f));

        subplot(1,2,2);imshow(uint8(Img));

        hold on;

        [c,h]=contour(u,[0,0],'r');

        hold off;

    end

end

就可实现对人的大脑切片的分割, 见下图:

 

注记:

1.为书写方便, matlab 程序中有的部分已经分断开来, 比如 $C_1,\cdots,C_4$ 及 $u$, 您在书写的时候可不能分段哦.

2.从上述程序可以看到在 matlab 中多用矩阵运算比单纯的迭代运算起来快得多.

 

4. 致谢

The author would like to thank Dr. S.J. Li and Dr. P. Li for suggesting the book by D.K. Wang and etc. And special thank goes to Dr. P. Li for exploiting this matlab procedure. 

目录
相关文章
|
开发工具 git
iterm2 oh-my-zsh 自动提示命令
iterm2 oh-my-zsh 自动提示命令
iterm2 oh-my-zsh 自动提示命令
|
2月前
|
人工智能 自然语言处理 文字识别
你们催更的模型,云栖大会一口气全发了!
通义发布6款全新模型及“通义百聆”语音品牌,覆盖文本、视觉、语音、视频、代码、图像全场景。Qwen系列升级显著提升多模态理解与生成能力,Wan2.5支持音画同步,百聆攻克企业语音落地难题,全面赋能AI应用创新。
|
4月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
459 51
解决You need to use a Theme.AppCompat theme (or descendant) with this activity
解决You need to use a Theme.AppCompat theme (or descendant) with this activity
213 4
|
11月前
|
机器学习/深度学习 存储 缓存
ATB概念之:算子tiling
算子 tiling 是一种优化技术,用于提高大规模张量运算的计算效率。它通过将大任务分解为小块,优化内存使用、支持并行计算,并防止内存溢出。在ATB中,tiling data指kernel的分片参数,用于指导计算。ATB提供了三种 tiling data 搬移策略:整体搬移、多stream搬移及随kernel下发搬移,旨在优化内存拷贝任务,提高计算效率。
|
9月前
|
存储 小程序 vr&ar
聊聊实时云渲染对VR大空间文旅的赋能-点量云流
实时云渲染如何赋能VR大空间文旅体验。传统VR体验多为固定座椅观看,缺乏互动;如今的VR体验店则允许用户在一定区域内自由移动并进行互动。然而,高精度VR模型对显卡要求极高,单靠VR设备难以实现流畅运行。实时云渲染通过B/S架构解决了这一问题。 具体实施步骤包括:1)准备高性能服务器、显卡及VR模型;2)将3D模型存储于服务器,并安装实时云渲染软件,生成推流链接或二维码;3)VR眼镜端安装特定客户端App,连接服务器资源。
249 1
|
人工智能 PyTorch 算法框架/工具
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
【8月更文挑战第6天】Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
|
运维 负载均衡 监控
确保网络设计中的冗余和高可用性
【8月更文挑战第24天】
1616 0
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
1357 1
|
安全
【阿里云电脑】老机型玩黑神话,不听显卡嗡嗡转
万众瞩目的《黑神话:悟空》终于发布!作为一款采用虚幻5引擎的佳作,其画质令人惊艳。官方建议配置为i5-8400/Ryzen 5 1600+GTX 1060/RX 580起步,而推荐配置则为i7-9700/Ryzen 5 5500+RTX 2060/RX 5700 XT/Arc A750。虽然兼容性广泛,但仍有玩家因设备问题无法体验。PS5价格飙升至4200+,让人望而却步。此时,云主机成为理想选择:安全、便捷、经济,最低只需1.2元/小时,内置游戏官方镜像,即刻畅玩,同时支持多种用途。
734 2

热门文章

最新文章