Matlab与C 混合编程实现超像素图像分割
摘要:
随着数字化时代的到来,图像处理越来越重要。在计算机视觉领域,图像分割指的是将数字图像细分为多个图像子区域(像素的集合)的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。更精确的,图像分割是对每个像素加标签的一个过程,这一过程使得具有相同标签的像素具有共同视觉特性。C 因为执行效率高,尤其是对于循环问题处理。而Matlab的可视化功能很强,本次论文设计结合两种语言的特点,去设计并实现一个图像的超像素分割方法。使得图像分割的结果更高效、更精准。
关键词:图像分割、C 、Matlab、混合编程
- 前言
Matlab具有丰富的图像处理函数库,运算速度慢,特别是在多重循环的情况下,不适合直接应用于工程之中。如果能把Matlab和另一种适合工程的编程语言结合到一起运用到数字图像处理领域,则会更加方便的进行图像处理,Matlab和C 的混合编程,既继承了Matlab的优点,又拥有了C 运算速度快、适合工程应用的特点。实际上,Matlab与C 混合编程就是通过Matlab的Mex工具将C 的代码编译成Matlab支持调用的可执行文件和函数接口。这样一方面可以在Matlab中利用已经写好的函数,另一方面,又可取C 所长补己之短,可以开发出具有良好的用户界面、强大的数据处理能力的应用软件。
- 研究背景
在Matlab进入市场前,国际上的许多应用软件包都是直接以FORTRAN和C语言等编程语言开发的。这种软件的缺点是适用面窄、接口简陋、程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。Matlab的出现,为各国科学家开发学科软件提供了新的基础。在Matlab问世不久的20世纪80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在Matlab上重建。
时至今日,经过Math Works公司的不断完善,Matlab已经安站成为适合多学科、多种工作平台的功能强劲的大型软件。在设计研究单位和工业部门,Matlab被广泛用于科学研究和解决各种具体问题。
- 国内外研究现状
目前Matlab主要包括Matlab和Simulink两大部分,在数学类科技应用软件中在数值计算方面首屈一指,由于Matlab主要是面对科学计算、可视化以及交互式程序设计的高科技计算环境,他会把数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全方面的解决方案。
Matlab有多种混合编程模式,可以和多种高级语言环境相融合使用。在进行混合编程过程中,首先要对Matlab平台的编译器进行分析,以确保是否能与高级语言开发环境相兼容,从而确定之间的混合方式,提高编程中的程序调试效率。若涉及到用户交互上,则需要通过图形用户界面控件、传递和共享部分的参数与数据。由于需要同时运行两个不同平台的可执行程序,因而,使用应用程序调用方式更为适合,可以在非模态窗口下进行操作,分别独立管理占用的两个进程ID句柄,系统资源使用较为灵活,其具有以下优势特点:
