分裂合并算法应用程序 设计说明书

合集下载

字节拆分、合并程序

字节拆分、合并程序

字节拆分、合并程序File name: e421.asmDescription: 1字节BCD码转换为2字节ASCII2字节ASCII码转化为1字节BCD码Date:Designed by:Source used: 30H: BCD data31H, 32H:ASCII data31H, 32H ->33HORG 2000HSTART: MOV SP, #40H ;赋堆栈指针MOV 30H, #49H ;30H单元赋值MOV R0, #32H ;R0指针赋值MOV @R0, #0 ;32H单元清零MOV A, 30HXCHD A, @R0 ;拆分字节ORL 32H, #30H ;转换为ASCIISW AP AORL A, #30H ;转换为ASCIIMOV 31H, A ;结果存于31H单元MOV A, 31H ;从31H单元取值ANL A, #0FH ;转换为BCDSW AP AMOV 33H, A ;结果存于33H单元MOV A, 32H ;从32H单元取值ANL A, #0FH ;转换为BCDORL 33H, A ;合并字节HERE: SJMP HERE ;踏步END数据块清零程序:将片外RAM 7000H-70FFH单元全部清零File name: clear.asmDate:Designed by:Source used: R0: 计数器DPTR: 片外数据指针ORG 0030HCLEAR: MOV R0, #00H ;设循环计数器MOV DPTR, #7000H ;设数据指针CLEAR1: CLR A ;将A清零MOVX @DPTR, A ;传送到片外RAMINC DPTR ;修改数据指针INC R0 ;修改循环计数器CJNE R0, #00H, CLEAR1 ;判断是否结束CLRW: SJMP CLRW ;原地踏步END附录1 设计报告格式要求实验名称专业班级姓名学号联系方式一、任务要求二、设计思路三、资源分配四、流程图五、源代码(含文件头说明、资源使用说明、语句行注释)六、程序测试方法与结果、软件性能分析七、心得与体会附录2 MedWin的使用1. 安装MedWin 的步骤a. 点击setup 文件后,出现安装MedWin 集成开发环境画面。

区域分裂合并

区域分裂合并

区域分裂合并区域分裂合并算法的基本思想是先确定⼀个分裂合并的准则,即区域特征⼀致性的测度,当图像中某个区域的特征不⼀致时就将该区域分裂成4个相等的⼦区域,当相邻的⼦区域满⾜⼀致性特征时则将它们合成⼀个⼤区域,直⾄所有区域不再满⾜分裂合并的条件为⽌. 当分裂到不能再分的情况时,分裂结束,然后它将查找相邻区域有没有相似的特征,如果有就将相似区域进⾏合并,最后达到分割的作⽤。

在⼀定程度上区域⽣长和区域分裂合并算法有异曲同⼯之妙,互相促进相辅相成的,区域分裂到极致就是分割成单⼀像素点,然后按照⼀定的测量准则进⾏合并,在⼀定程度上可以认为是单⼀像素点的区域⽣长⽅法。

区域⽣长⽐区域分裂合并的⽅法节省了分裂的过程,⽽区域分裂合并的⽅法可以在较⼤的⼀个相似区域基础上再进⾏相似合并,⽽区域⽣长只能从单⼀像素点出发进⾏⽣长(合并)。

反复进⾏拆分和聚合以满⾜限制条件的算法。

令R表⽰整幅图像区域并选择⼀个谓词P。

对R进⾏分割的⼀种⽅法是反复将分割得到的结果图像再次分为四个区域,直到对任何区域R i,有P(R i)=TRUE。

这⾥是从整幅图像开始。

如果P(R)=FALSE,就将图像分割为4个区域。

对任何区域如果P的值是FALSE.就将这4个区域的每个区域再次分别分为4个区域,如此不断继续下去。

这种特殊的分割技术⽤所谓的四叉树形式表⽰最为⽅便(就是说,每个⾮叶⼦节点正好有4个⼦树),这正如图10.42中说明的树那样。

注意,树的根对应于整幅图像,每个节点对应于划分的⼦部分。

此时,只有R4进⾏了进⼀步的再细分。

如果只使⽤拆分,最后的分区可能会包含具有相同性质的相邻区域。

这种缺陷可以通过进⾏拆分的同时也允许进⾏区域聚合来得到矫正。

就是说,只有在P(R j∪R k)=TRUE时,两个相邻的区域R j和R k才能聚合。

前⾯的讨论可以总结为如下过程。

在反复操作的每⼀步,我们需要做:l.对于任何区域R i,如果P(R i)=FALSE,就将每个区域都拆分为4个相连的象限区域。

matlab 四叉树表达的迭代区域分裂合并算法

matlab 四叉树表达的迭代区域分裂合并算法

matlab 四叉树表达的迭代区域分裂合并算法
四叉树是一种常用于空间划分和图像处理的数据结构,它可以将空间划分为四个等分的矩形,并对每个矩形进行编号,形成一颗二叉树。

在处理图像时,四叉树可以表示图像的不同颜色区域,从而方便进行区域合并和分裂等操作。

下面介绍一个使用四叉树表示图像区域的迭代区域分裂合并算法。

该算法的基本思想是:首先将图像划分为小区域,并计算每个区域的颜色值;然后根据每个小区域的颜色值分裂或合并区域,直到满足预设的分辨率和颜色差异阈值为止。

具体的算法流程如下:
1. 将图像划分为初始小区域,计算每个区域的颜色值,并构建初始四叉树。

2. 对每个小区域,计算其颜色均值和颜色标准差(用于评估区域内颜色的差异程度)。

3. 如果当前四叉树节点代表的区域中颜色差异大于预设的阈值,将该节点进行区域分裂操作。

具体地,将该节点分成四个等分的子节点,并计算每个子节点的颜色均值和颜色标准差。

4. 如果当前四叉树节点代表的区域中颜色差异小于预设的阈值,将该节点进行区域合并操作。

具体地,将该节点所在的父节点合并成一个区域,并计算该区域
的颜色均值和颜色标准差。

5. 重复步骤3和步骤4,直到满足预设的分辨率和颜色差异阈值为止。

6. 将四叉树中的每个叶节点表示为一个矩形区域,并用对应的颜色值填充该矩形区域,从而得到分割后的图像。

需要注意的是,在实际应用中,由于图像的颜色分布较为复杂,很难确定适当的颜色差异阈值和分辨率,因此需要进行多次实验和调整,以达到最佳效果。

文件分割与合并软件使用教程

文件分割与合并软件使用教程

文件分割与合并软件使用教程第一章软件介绍文件分割与合并软件是一种能够将大文件拆分成小文件并进行合并的工具。

它能够有效地解决文件过大导致存储不便和传输困难的问题。

本章将介绍几款常用的文件分割与合并软件。

1.1 A软件A软件是一款功能强大且易于使用的文件分割与合并工具。

它支持将任意类型的文件分割成指定大小的块,并能够自动计算校验和,保证数据的完整性。

同时,A软件还提供了合并分割文件的功能,支持选择要合并的文件块,以及设定合并后文件的存储位置。

1.2 B软件B软件是另一款流行的文件分割与合并工具。

它提供了更多的分割与合并选项,包括按照文件大小、块数或关键字进行分割,以及支持目录分割等功能。

此外,B软件还提供了文件加密和压缩功能,能够进一步保护和优化文件分割与合并的过程。

第二章文件分割操作指南本章将详细介绍如何使用文件分割与合并软件进行文件分割的操作。

在官方网站下载并安装A软件。

安装完成后,打开软件,进入主界面。

2.2 导入文件点击“导入”按钮,选择要进行分割的文件。

支持多选功能,可以同时选择多个文件。

2.3 设置分割选项在分割选项页面,可以设置分割后的文件大小、块数等参数。

也可以选择是否生成校验码以及指定保存位置。

2.4 启动分割点击“开始分割”按钮,软件将根据设置的选项开始进行分割操作。

分割完成后,会弹出提示。

2.5 分割完成分割后的文件块将会存储在指定的位置。

用户可以根据自己的需求将这些文件块进行备份、传输或其他操作。

第三章文件合并操作指南本章将详细介绍如何使用文件分割与合并软件进行文件合并的操作。

在官方网站下载并安装A软件。

安装完成后,打开软件,进入主界面。

3.2 导入分割文件点击“导入”按钮,选择要进行合并的文件块。

支持多选功能,可以同时选择多个文件。

3.3 设置合并选项在合并选项页面,可以指定合并后的文件名称、文件类型等参数。

也可以选择是否进行校验和校验。

3.4 启动合并点击“开始合并”按钮,软件将根据设置的选项开始进行合并操作。

python区域分离合并法的原理和应用

python区域分离合并法的原理和应用

一、概述Python作为一种高级编程语言,广泛应用于数据分析、人工智能、科学计算等领域。

在数据处理过程中,区域分离合并法被广泛应用于图像处理、地理信息系统等领域。

本文将介绍Python区域分离合并法的原理和应用。

二、Python区域分离合并法的原理1. 区域分离区域分离是指将图像或数据集按照一定的规则进行划分,形成多个小区域。

在Python中,可以使用图像处理库如OpenCV、PIL等实现图像的区域分离。

对于数据集,可以利用Python的数据处理库如NumPy、Pandas等进行区域分离操作。

2. 区域合并区域合并是指通过一定的规则将相邻的小区域进行合并,形成更大的区域。

在Python中,可以利用图像处理库中的合并算法实现图像的区域合并,也可以利用数据处理库中的合并函数实现数据集的区域合并操作。

三、Python区域分离合并法的应用1. 图像处理在图像处理领域,区域分离合并法常用于图像分割和目标识别。

通过区域分离,可以将图像划分为多个小区域,然后通过区域合并将相邻的小区域合并为目标区域。

这种方法在目标检测和图像识别中具有重要的应用价值。

2. 地理信息系统在地理信息系统中,区域分离合并法常用于地理空间数据的处理和分析。

通过区域分离,可以将地理空间数据集划分为多个小区域,然后通过区域合并将相邻的小区域合并为更大的地理区域。

这种方法对地理空间数据的聚类和分区具有重要意义。

3. 科学计算在科学计算领域,区域分离合并法也被广泛应用。

例如在气象学中,可以利用区域分离合并法对气象数据进行分区和合并,以便进行气候分析和预测。

在生物学研究中,区域分离合并法也可以用于细胞分析和组织分析等领域。

四、结语区域分离合并法作为一种重要的数据处理方法,对于图像处理、地理信息系统、科学计算等领域具有重要的应用价值。

在Python中,可以通过图像处理库和数据处理库实现区域分离合并的操作。

未来随着人工智能和大数据技术的发展,区域分离合并法将在更多的领域得到应用,为数据处理和分析提供更加丰富的工具和方法。

halcon中分裂合并算法

halcon中分裂合并算法

halcon中分裂合并算法Halcon中分裂合并算法Halcon是一种强大的机器视觉开发工具,其提供了丰富的图像处理算法和函数库。

其中,分裂合并算法是Halcon中一种常用的图像分割算法,用于将图像分割成具有相似特征的区域,以便进行后续的目标检测、识别和测量等任务。

分裂合并算法是一种基于区域的图像分割方法,其基本思想是将图像分成若干个初始区域,然后通过合并或分裂这些区域,得到最终的分割结果。

该算法主要包括以下几个步骤:1. 初始化:将图像分成若干个初始区域。

通常情况下,可以使用常见的分割算法如阈值分割、边缘检测等来得到初始区域。

2. 区域合并:根据一定的合并准则,将相邻的区域合并成一个更大的区域。

合并准则可以根据具体的应用需求来确定,通常可以采用颜色相似度、纹理相似度、形状相似度等来衡量区域间的相似程度。

3. 区域分裂:根据一定的分裂准则,将过大或过复杂的区域进行分裂,得到更细致的分割结果。

分裂准则可以考虑区域的边缘强度、纹理复杂度等因素。

4. 迭代合并和分裂:重复进行区域合并和分裂操作,直到满足停止准则为止。

停止准则可以根据分割效果来确定,如区域数量、分割质量等。

分裂合并算法的优点是可以根据具体的应用需求来定义合并和分裂准则,从而得到更好的分割结果。

同时,该算法也具有较好的鲁棒性和计算效率,适用于各种不同的图像场景。

然而,分裂合并算法也存在一些局限性。

首先,合并和分裂的准则需要根据具体的应用场景来定义,缺乏通用性。

其次,算法的分割结果可能受到图像质量、噪声等因素的影响,导致分割结果不准确。

此外,算法的计算复杂度较高,在处理大尺寸图像时可能存在效率问题。

为了克服上述问题,可以结合其他图像分割算法来改进分裂合并算法。

例如,可以在分裂合并的基础上引入边缘信息、纹理信息等,以提高分割的准确性和稳定性。

此外,还可以使用多尺度分割方法,将图像分割成不同尺度的区域,从而更好地捕捉图像中的细节信息。

总结起来,Halcon中的分裂合并算法是一种常用的图像分割方法,可以将图像分割成具有相似特征的区域。

VBA 中的数据合并和拆分方法

VBA 中的数据合并和拆分方法VBA(Visual Basic for Applications)是一种用于自动化任务和扩展微软Office应用程序功能的编程语言。

在VBA中,数据的合并和拆分是非常常见的操作。

本文将介绍如何使用VBA编写数据合并和拆分的方法,以提高数据处理的效率。

一、数据合并方法:1. 合并行数据:如果您有多个行具有相同的关键数据,您可以使用VBA 来合并这些行。

首先,您需要创建一个用于储存结果的新行。

然后,遍历每一行,将该行的数据合并到新行中。

最后,删除原始行。

下面是一个示例代码:```vbaSub MergeRows()Dim lastRow As LongDim i As LongDim keyCol As VariantlastRow = Cells(Rows.Count, 1).End(xlUp).RowkeyCol = Cells(2, 1).ValueFor i = 3 To lastRowIf Cells(i, 1).Value = keyCol ThenCells(2, 2).Value = Cells(2, 2).Value & ", " & Cells(i, 2).ValueRows(i).DeleteElsekeyCol = Cells(i, 1).ValueEnd IfNext iEnd Sub```以上代码的示例是合并具有相同关键数据的行,根据实际需求修改相关列的索引即可。

2. 合并列数据:如果您有多个列持有相同的关键数据,您可以使用VBA 来合并这些列。

首先,您需要创建一个用于储存结果的新列。

然后,遍历每一行,并将该行中的多个列的数据合并到新列中。

最后,删除原始列。

下面是一个示例代码:```vbaSub MergeColumns()Dim lastRow As LongDim i As LongDim keyRow As VariantlastRow = Cells(Rows.Count, 1).End(xlUp).RowkeyRow = Cells(2, 1).ValueFor i = 3 To lastRowIf Cells(i, 1).Value = keyRow ThenCells(2, 2).Value = Cells(2, 2).Value & ", " & Cells(i, 2).ValueCells(2, 3).Value = Cells(2, 3).Value & ", " & Cells(i, 3).ValueRows(i).DeleteElsekeyRow = Cells(i, 1).ValueEnd IfNext iEnd Sub```以上代码的示例是合并具有相同关键数据的列,根据实际需求修改相关行和列的索引即可。

一种基于分裂合并的多边形逼近算法


近 多边形不再改变为止。该算法能够在保持原始轮廓形状特征的前提下 , 有效减 少数据量 , 提高 了计算效率。 关键词: 断层医学图象 ; 轮廓跟踪 ; 多边形逼近 ; 共线检查
中图分类号 : T H1 6 文献标识码 : A 文章编号 : 1 0 0 1 — 3 9 9 7 ( 2 0 1 3 ) 0 6 — 0 2 0 0 — 0 3

要: 断层 医学图象 目标组织经图象分割、 轮廓跟踪后得到的轮廓像 素点数据量较大, 不宜直接 用于几何建模 。多边形
逼近是提取 曲线特征点和简化数据、 加快 图形运算的一个重要 方法, 提 出一种基于分裂合 并的多边形逼近算法, 将轮 廓
像素点集合分段进行线段 逼近 , 逐 次递增进行共线检查 , 反复执行 分裂、 合并操作 , 直到所有逼近误差在指定范围 内, 逼
a n i m p o r t a n t et m h o d i n, e tu a r e p o i n t s e x t r a t i o n a n d d t a a r e d u c i n g . I n g e n e r a l ,i t p r e s e n t s U n e w p o l y g o n a l pp a r o x i ma t i o n
Ke y Wo r d s : S e c t i o n a l Me d i c a l I ma g e ; Co n t o u r Fo l l o wi n g ; Po l y g o n a l Ap p r o x i ma t i o n ; Co l l i n e a r i t y Te s t
机 械 设 计 与 制 造
Ma c h i n e r y De s i g n & Ma n u f a c t u r e

9.5.2 区域分裂与合并及其Matlab实现[共5页]

第9章 图 像 分 割– 373 – { return; } // 返回bThre = dlgPara->m_bThre; // 获取用户设定的阈值delete dlgPara; // 删除对话框imgInput.RegionGrow(&imgOutput, point.x, point.y, bThre); //执行区域生长 break;default:AfxMessageBox((LPCTSTR)"错误的参数设置,检查设定的服务参数");}pDoc->m_Image = imgOutput;读者可以通过光盘中示例程序DIPDemo 中的菜单命令“图像分割→区域生长”来观察处理效果。

执行此命令时,需要双击图像中的某点以给定生长起始点,并给出阈值参数。

9.5.2 区域分裂与合并及其Matlab 实现区域生长是从一组生长点开始的,另一种方法是在开始时将图像分割为一系列任意不相交的区域,然后将它们合并或者拆分以满足限制条件,这就是区域分裂与合并。

通过分裂,可以将不同特征的区域分离开,而通过合并,可以将相同特征的区域合并起来。

1.区域分裂与合并算法(1)分裂令R 表示整个图像区域,P 代表某种相似性准则。

一种区域分裂方法是首先将图像等分为4个区域,然后反复将分割得到的子图像再次分为4个区域,直到对任意R i ,P (R i )=TRUE ,表示区域R i 已经满足相似性准则(譬如说该区域内的灰度值相等或相近),此时不再进行分裂操作。

如果P (R i )=FALSE ,则将R i 分割为4个区域。

如此继续下去,直到P (R i )=TRUE 或者已经到单个像素。

这个过程可以用四叉树形式表示,如图9.21所示。

(a )被分割的图像 (b )对应的四叉树图9.21 四叉树算法示意图 其中图(a )中未标出的4个区域分别为R 411、R 412 、R 413和R 414。

分裂bregman算法 c程序

分裂Bregman算法的C程序实现一、引言分裂Bregman算法是一种用于求解优化问题的迭代算法,尤其适用于图像处理和重建等领域。

该算法通过将原始问题分裂为更小的子问题,并利用Bregman距离来度量解的近似程度,从而有效地求解最优化问题。

本篇文章将详细介绍如何使用C语言实现分裂Bregman算法。

二、算法原理1. Bregman距离:Bregman距离是凸函数的一种重要性质,它度量了两个点之间的“距离”。

在优化问题中,Bregman距离可以用来度量解的近似程度。

2. 优化问题:分裂Bregman算法主要用于求解约束优化问题,如L1正则化问题、Total Variation(TV)问题等。

这些问题的目标函数通常是非光滑的,分裂Bregman算法能够有效地处理这类问题。

3. 迭代过程:分裂Bregman算法的基本思想是将原始问题分裂为多个子问题,并在每个子问题上应用迭代方法。

通过引入额外的变量和约束条件,将原始问题转化为更容易处理的子问题。

三、C程序实现下面是一个简单的C程序实现分裂Bregman算法的框架:```c#include <stdio.h>#include <stdlib.h>#include <math.h>// 定义Bregman距离函数double bregman_distance(double x, double y, double gradient_x, double gradient_y) {return x*gradient_x + y*gradient_y;}// 定义优化问题的目标函数和约束条件double objective_function(double x, double y) {// 目标函数的计算return fabs(x) + fabs(y);}void constraints_function(double* x, double* y) {// 约束条件的计算和满足条件的方式}int main() {double x = 1.0; // 初始解double y = 1.0; // 初始解double lambda = 0.1; // 正则化参数double epsilon = 1e-6; // 停止准则阈值int max_iterations = 1000; // 最大迭代次数int iteration = 0; // 迭代次数计数器double gradient_x, gradient_y; // Bregman距离的梯度值double distance; // Bregman距离double objective; // 目标函数值double delta; // 解的改变量while (iteration < max_iterations) {// 计算目标函数和约束条件函数的值objective = objective_function(x, y);constraints_function(&x, &y); // 满足约束条件的方式// 计算Bregman距离的梯度值和Bregman距离gradient_x = objective_function_gradient_x(x, y); // 目标函数梯度的计算方式gradient_y = objective_function_gradient_y(x, y); // 目标函数梯度的计算方式distance = bregman_distance(x, y, gradient_x, gradient_y); // Bregman距离的计算方式// 更新解并计算解的改变量delta = objective - distance - lambda*distance; // 解的改变量的计算方式// 如果解的改变量小于停止准则阈值,则停止迭代;否则继续迭代并更新解和Bregman距离的梯度值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mindim:分裂的最小尺寸,小于该尺寸则无法分裂 fun:用于判定的函数 输出参数:无 返回结果:v:布尔矩阵,保存分别对每个子矩阵判定的结果 说 明:无 处理过程: (1)获得输入矩阵的子矩阵 (2)遍历子矩阵,如果子矩阵尺寸小于 mindim 则返回假;使用 fun 判定子矩阵是否满 足分裂条件,并将判定结果保存到 v
在该结构体中,供其他过程调用。 处理过程: (1)使用 uigetfile 函数显示打开文件对话框供用户选择图像文件 (2)从 uigetfile 的返回值得到文件路径 (3)使用 imread 通过路径读取图像数据,保存在 handles.image 中并使用 guidata 函数
进行绑定 (4)显示图像
3.2.3 图像保存
模块名称:pushbutton_save_Callback(hObject, eventdata, handles) 模块功能:响应按钮事件,保存图像到硬盘。 输入参数:handles.resultImage 输出参数:无 返回结果:图像保存到用户指定的路径 说 明:无 处理过程: (1)使用 uioutfile 函数显示保存文件对话框供用户保存结果图像文件 (2)从 uiputfile 的返回值得到文件路径 (3)使用 imwrite 通过路径保存 handles.resultImage 中的图像数据
false 不可分裂 说 明:当输入矩阵(区域)的标准差大于 10 且均值在 0~125 之间时返回真 处理过程: (1)求矩阵的标准差 (2)求矩阵的均值 (3)代入判定条件,返回判定结果
3.1.2 断言 2(predicate2)
模块名称:flag = predicate2(region)
模块功能:判断区域是否满足分裂条件 输入参数:region:待判断区域 输出参数:无 返回结果:flag:true 可分裂
1.3 程序的输入
程序输入为 8 位灰度图像,格式为 JPEG、BMP 或者 TIFF。
1.4 程序的输出
程序输出为经过分裂合并算法处理的图像,显示在图形用户界面上,并可以将保存回硬 盘。
2 分裂合并算法应用程序总体设计
2.1 基本设计概念和处理流程 2.1.1 GUI 流程
2.1.2 算法流程
算法开始
分裂合并算法应用程序设计说明书
1 分裂合并算法应用程序简介
1.1 程序的功能
z 图像的读取和保存。支持读取待分割图像,以及保存结果图像。 z 算法参数的调节。支持对不同断言的选取,以及对 mindim 参数的调节。 z 基于分裂合并算法的串行区域分割。 z 显示图像。同时在用户界面上显示算法输入图像和算法输出图像。
4.2 不同断言的实验
断言为分裂合并的判定准则。在实验中使用了 2 中不同的断言。断言 1 的判定条件为, 当输入矩阵(区域)的标准差大于 10 且均值在 0~125 之间时返回真;断言 2 的判定条件为, 当输入矩阵(区域)的每一列都存在一个点,其值与矩阵均值的差小于矩阵标准差时,断言 为真。
图 4.8 列出了在 mindim=2 时,使用断言 1 和断言 2 处理分别得到的结果。
split_test:分裂测试函数
predicate:断言函数
2.3 主要的数据结构
无。
3 功能模块设计
3.1 分裂合并算法 3.1.1 断言 1(predicate)
模块名称:flag = predicate(region) 模块功能:判断区域是否满足分裂条件 输入参数:region:待判断区域 输出参数:无 返回结果:flag:true 可分裂
硬件类别 CPU
需求 Intel Pentium (Pentium IV and above) Intel Celeron Intel Xeon Intel Core AMD Athlon AMD Opteron SPARC
硬盘 内存
ultraSPARC PowerPC (G4 and above) 510 MB (MATLAB only) 512 MB (1024 MB recommended)
4.1 不同 mindim 值的实验
mindim 值代表分割的最小单位,该值的选取直接关系到最终的分割效果。根据算法的 要求,mindim 值应该选取为 2 的幂。下面列出在使用断言 1 时,mindim 分别取 2、4、8、 16、32 得到的实验结果。
abc def 图 4.7 经过分裂合并处理的图像。(a) 原图; (b) mindim = 2; (c) mindim = 4;(d) mindim = 8;(e) mindim = 16; (f) mindim = 32
3.2 图形用户界面
3.2.1 图像读取及显示
模块名称:pushbutton_open_Callback(hObject, eventdata, handles) 模块功能:响应按钮事件,打开图像并显示在 GUI 上。 输入参数:无 输出参数:handles.image 返回结果:打开图像并显示在 GUI 上。 说 明:handles 为 matlab 预定义的保存全局变量的结构体。读取的图像数据被保存
图 4.10 测试用例 2
该图像的部分重要参数如下(由 matlab 的 imfinfo 函数输出): z FileSize: 199402 z Format: 'tif' z Width: 483 z Height: 412 z BitDepth: 8 z ColorType: 'grayscale' z ByteOrder: 'little-endian' z BitsPerSample: 8 z Compression: 'Uncompressed' z SamplesPerPixel: 1 z RowsPerStrip: 16 z MaxSampleValue: 255 z MinSampleValue: 0 z Thresholding: 1 由于使用断言 1 的处理效果很差,这里仅给出断言 2 处理的结果,如下图所示。
否 扩展图像尺寸
图像尺寸是否为 2^N * 2^N

根据断言进行四叉 分裂
四叉分裂 后的稀疏
矩阵
依据稀疏矩阵得到 原图分裂的子矩阵
根据断言合并子矩 阵,对结果图像赋

获得连通性矩阵
根据连通性矩阵重 建结果图像
算法结束
2.2 程序的功能模块结构
GUI:负责图像读入、保存、显示,接收用户输入
splitmerge:分裂合并主算法过程
false 不可分裂 说 明: 当输入矩阵(区域)的每一列都存在一个点,其值与矩阵均值的差小于矩
阵标准差时,断言为真 处理过程: (1)求矩阵的标准差 (2)求矩阵的均值 (3)代入判定条件,返回判定结果
3.1.3 分裂测试(spFra bibliotekit_test)
模块名称:v = split_test(B,mindim,fun) 模块功能:分裂测试函数,测试当前输入矩阵中的子矩阵是否可以继续划分 输入参数:B:当前输入矩阵
abc de
图 4.11 使用断言 2 对测试用例 2 进行分裂合并处理的结果。(a) 原图; (b) mindim = 2; (c) mindim = 4; (d) mindim = 8;(e) mindim = 16
第三个测试用例图像如下。
图 4.12 测试用例 3 该图像的部分重要参数如下(由 matlab 的 imfinfo 函数输出): z FileSize: 1049798 z Format: 'tif' z Width: 1024 z Height: 1024 z BitDepth: 8 z ColorType: 'grayscale' z ByteOrder: 'little-endian' z BitsPerSample: 8 z Compression: 'Uncompressed' z SamplesPerPixel: 1 z RowsPerStrip: 8 z MaxSampleValue: 255 z MinSampleValue: 0 z Thresholding: 1 为做出更好的对比,这里也仅给出断言 2 处理的结果,如下图所示。
abc 图 4.8 经过分裂合并处理的图像。(a) 原图; (b) 使用断言 1 处理的结果; (c) 使用断言 2 处理的结果
4.3 中间结果
分裂合并的算法包含了若干步骤。首先,图像依据断言的判定进行四叉分裂得到稀疏矩
阵,该矩阵用于记录分裂的区域信息(左上角和右下角);然后依照该稀疏矩阵获取原始图 像上的数据,依据合并准则进行合并,并得到连通性矩阵;最后利用连通性矩阵重建图像。
3.1.4 分裂合并算法主体(split_merge)
模块名称:g = splitmerge(f,mindim,fun) 模块功能:对输入图像执行分裂合并算法并输出结果 输入参数:f:输入图像
mindim:分裂的最小尺寸,小于该尺寸则无法分裂 fun:断言函数 输出参数:无 返回结果:g:结果图像 说 明:无 处理过程: (1)判断图像尺寸是否为 2^N * 2^N,如果为否,则将尺寸扩展到 2^N * 2^N,并将空 位补 0 (2)根据断言进行四叉分裂,得到分裂结果的稀疏矩阵 S (3)将 g 置为 0 矩阵,新建 0 矩阵 MARKER 记录图像连通性 (4)依据 S 得到 f 上的图像子区域的数据,根据断言合并分裂的子区域,并对 g 赋值 (5)依据 MARKER 重建 g (6)去掉填充的部分,恢复图像原始尺寸
4.存在的问题及改进建议
在分裂合并的算法实验中,根据主函数的输入参数定义,选择不同的 mindim 值和不同 的断言进行实验。实验将采用下示图像作为测试用例。
图 4.6 测试用例,星云图像
该图像的部分重要参数如下(由 matlab 的 imfinfo 函数输出): z FileSize: 65798 z Format: 'tif' z Width: 256 z Height: 256 z BitDepth: 8 z ColorType: 'grayscale' z ByteOrder: 'little-endian' z BitsPerSample: 8 z Compression: 'Uncompressed' z SamplesPerPixel: 1 z RowsPerStrip: 32 z MaxSampleValue: 255 z MinSampleValue: 0 z Thresholding: 1
相关文档
最新文档