首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SSE图像算法优化系列三十二:ZhangGuo图像细化算法C语言以及SIMD指令优化

二值图像的细化算法也有很多种,比较有名的比如Hilditch细化、Rosenfeld细化、基于索引表的细化、还有Opencv自带的THINNING_ZHANGSUEN、THINNING_GUOHALL...这些都属于迭代的细化方式,当然还有一种是基于二值图像距离变换的细化方法,二值想比较,我个人认为是基于迭代的效果稳定、可靠,但是速度较慢,且速度和图片的内容有关,基于距离变换的版本,优点是速度稳定,但是效果差强人意...本文这里还是选择基于迭代的方式予以实现。        ...这个事先计算好哪些是前景的工作,针对二值图像,其实就是类似于传统的RLE行程编码,我们计算出每行前景的起点终点,等等。这个算法大家自行去研究。   ...不过HALONC这个算法可没有用GPU哦。   测试Demo:  Zhang 以及  Guo 图像细化

70720
您找到你想要的搜索结果了吗?
是的
没有找到

【数据结构和算法】--- 基于c语言排序算法的实现(1)

此处的排序便是由排序算法实现,下面将对不同的排序算法进行剖析。 1.3 常见的排序算法 下面将基于c语言,对以上七种排序逐一实现。...直接插入排序动态演示: 直接插入排序的特性总结: 元素集合越接近有序,直接插入排序算法的时间效率越高; 时间复杂度: O(N^2); 空间复杂度: O(1),它是一种稳定的排序算法; 稳定性: 稳定 2.2...根据元素集合越接近有序,直接插入排序算法的时间效率越高的规律,那么我们可以想方法先把一堆数据排的接近有序(预排序),然后再进行直接插入排序。...希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的希尔排序的时间复杂度都不固定: 《数据结构(C语言版)》— 严蔚敏 《数据结构-用面相对象方法与C+...因为之前已经介绍过了,所以这里就不多讲了,详细请参考:【数据结构和算法】—二叉树(2)–堆的实现和应用 直接选择排序的特性总结: 堆排序使用堆来选数,效率就高了很多。

6310

【数据结构和算法】--- 基于c语言排序算法的实现(2)

1.1 冒泡排序 说起冒泡排序,这也算是在我们学习编程时遇到的第一个排序算法,总体逻辑就是从待排序数组第一个一直向后遍历,遇到比自己大的就记录该值,遇到比自己小的就交换,直到到达待排序数组结尾,此时待排序数组长度...1, end] QuickSort(a, div + 1, end); } 上述为快速排序递归实现的主框架,发现与二叉树前序遍历规则非常像,我们可以参照二叉树前序遍历(如有疑问请参考:【数据结构和算法...根据其特性,元素集合越接近有序,直接插入排序算法的时间效率越高。且此时待排序数组的元素个数较少,不适合希尔排序,且他是一种稳定的排序算法。...1.4 快排非递归版 根据递归版快排的特性,相当于二叉树的前序遍历,那么我们便可利用栈后进先出的特性,来模拟递归并实现排序,栈的实现还请参考:【数据结构和算法】— 栈。...,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。

9410

C语言算法-学习二

也就是 算法(algorithm) 一个程序除了 算法 和 数据结构 这两个要素外,还应当采用 结构化程序设计方法 进行程序设计,并用某一种 计算机语言 表示。...什么是算法 算法是为了解决问题而执行的一系列步骤。 计算机的算法可以分为两大类别: 数值运算算法 数值运算的目的是求数值解。 非数值运算算法 非数值运算用于事务管理领域(图书检索,人事管理等等)。...算法的目的是为了求解,“解”就是输出 有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果 怎么表示一个算法 常用的方法有: 自然语言 流程图 NS图 伪代码 .........流程图表示算法 流程图是用一些图框来表示各种操作, 用图形表示算法,直观形象,易于理解。...image.png 以上面的例子做N-S图 image.png 用C语言表示算法 while循环 #include int main() { int a,i; a

2.6K30

基于OpenCL的图像积分图算法改进

之前写过一篇文章《基于OpenCL的图像积分图算法实现》介绍了opencl中积分图算法的基本原理(不了解积分图概念的朋友可以先参考这篇文章),并基于这个基本原理提供了kernel实现代码.但经过这两个月的实践检验...,原先这个基于前缀和计算加矩阵转置的算法被证明在GPU上是非常低效的。...注:为了提高效率这里的kernel代码基于前一篇文章的算法上有改进,将前经和计算和矩阵转置合并为一个名为prefix_sum_col_and_transpose的kernel,没有改进前的算法更慢数倍。...于是我参考了OpenCLIPP的积分图算法思路,重写了自己的代码,新的算法思路是这样的: 整个算法分为5个步骤(kernel)来完成。...第一步(integral_block)将整个图像分为4x4的小块,分别计算局部积分图。 ?

98120

基于OpenCL的图像积分图算法实现

https://blog.csdn.net/10km/article/details/50865902 积分图的概念 图像积分图算法图像特征检测中有着比较广泛的应用,主要用于规则区域特征值的计算...从公式(2)和公式(3)可以看出,积分图的算法类似于前缀和计算(prefix sum) 对于只有一行的像素的图像,它的积分图就是其前缀和数组 所以,如果要用OpenCL并行计算图像矩阵A的积分图,...可以把积分图算法分拆成两个步骤: 首先计算矩阵A在x方向的前缀和矩阵A1 然后再在计算矩阵A1在y方向前缀和矩阵A2,A2就是图像矩阵A的积分图矩阵。...所以OpenCL具体实现的时候,分为下面4步 计算矩阵A在x方向的前缀和矩阵A1 A1转置 计算矩阵A1在x方向的前缀和矩阵A2 A2转置 也就是说,基于OpenCL的积分图算法最终被分解为两次x...,参见我的后续博文《基于OpenCL的图像积分图算法改进》 参考文章 《AdaBoost人脸检测算法1(转)》 《基于OpenCL的图像积分图算法优化研究》

87020

基于 Retinex 的几种图像增强算法总结

图像处理领域,常将该理论用于图像增强,为了得到成像更好的图片。这时,R(x,y) 表示为图像增强得到后的图像,I(x,y) 为原始的图像。...SSR 算法 SSR (Singal Scale Retinex),即单尺度视网膜算法是 Retinex 算法中最基础的一个算法。...MSRCR 算法 MSRCR 算法是一种改进 MSR 的算法,全称是 Multi-Scale Retinex with Color Restoration,即带色彩恢复的多尺度视网膜增强算法。 ?...不同 MSR 算法对比 通过对 MSR 算法和 SSR 算法的比较,可以发现,MSR 和 MSRCR 算法的结果一般要比 SSR 算法的结果更亮,因为多重尺度(多个 sigma 的取值)的组合。...对两种 MSR 算法的结果进行比较,可以发现,结果没有太大的差别。而且在这些组合中,64-128-256 的组合结果是最优的。不仅图像变得更清晰,而且颜色也变得更加明亮。

6.5K71

一个c语言程序能实现几种算法_C语言实现算法

算法分析及性能介绍 2.1 MUSIC算法之前的DOA估计算法 DOA估计的传统方法主要基于波束形成和零陷引导的概念,并没有利用到接受信号矢量的模型或者是信号和噪声的统计模型。...MUSIC算法是一种基于特征结构的高分辨率DOA算法,这一类方法都是基于接受信号相关矩阵的以下两个特性:1,相关矩阵的特征向量张成的矢量空间可以分成两个部分,信号子空间和噪声子空间;2,不同方向信号源对应的阵列流形矢量与噪声子空间正交...2.3求根MUSIC算法: 2.3.1求根MUSIC算法原理 对于阵元间距为d的等距直线阵列,导引向量 的第m个元素可以表示为 则MUSIC谱函数可以写成: 其中 是矩阵C中第L条对角线的元素之和。...假定入射信号为窄带信号,波长为 ,则M维接受信号矢量可以表示为 其中 是阵列方向向量: 从向量 中抽出一个L维的子向量 ( ),有 当满足 时, 当满足 时, 可以证明,向量 的子向量的相关矩阵C满足...3.结论 本文从各种基于MUSIC算法的改进算法的原理入手,从理论角度分析了各算法的推导过程,并在每节最后给出了简要的性能分析。

3.4K30

C语言 排序算法_C语言中三大经典的排序算法

直接选择排序 2.2堆排序 三 交换排序 3.1冒泡排序 3.2快速排序 3.3快速排序的优化(非递归) 四 归并排序 4.1归并排序递归版本 4.2归并排序非递归版本 总结 ---- 前言 常见的排序算法如下...时间复杂度:O(N^2) 空间复杂度:O(1),它是一种稳定的排序算法 稳定性:稳定 1.2希尔排序 希尔排序法又称缩小增量法。..., key+1, right); } 1.空间复杂度 0(lgn) 2.时间复杂度0(n*lgn) 3.3快速排序的优化(非递归) 主要通过数据结构栈来模拟实现类似于二叉树的前序遍历 如果有同学对C语言实现栈不熟悉可以点一下链接...:C源实现数据结构栈 具体代码如下: typedef int STDataType; typedef struct Stack { STDataType* a; int top; // 栈顶 int...,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。

2.7K20

C语言编程语法—排序算法

一、冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。...; i < len; i++) printf("%d ", arr[i]); return 0; } 二、选择排序 选择排序(Selection sort)是一种简单直观的排序算法...;j--) arr[j] = arr[j-1]; arr[j] = temp; } } 四、希尔排序 希尔排序,也称递减增量排序算法...希尔排序是非稳定排序算法。...希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

17240

浅析C语言贪心算法

前言 贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。...贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。...贪心算法和动态规划本质上是对子问题树的一种修剪,两种算法要求问题都具有的一个性质就是子问题最优性(组成最优解的每一个子问题的解,对于这个子问题本身肯定也是最优的)。...贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。...总结 这篇文章我简单介绍了贪心算法,真的只是简单介绍,大佬们可以划走了,但这篇文章对新手还是会有很多帮助的,希望这篇文章可以为广大算法新手们的深入学习打好基础。

8010

C语言实现洗牌算法

洗牌算法 Fisher-Yates洗牌算法是由 Ronald A.Fisher和Frank Yates于1938年发明的,后来被Knuth在书中介绍,很多人直接称Knuth洗牌算法, Knuth大家应该比较熟悉...,《The Art of Computer Programming》作者,算法理论的创始人。...我们现在所使用的各种算法复杂度分析的符号,就是他发明的。 等概率:洗牌算法有些人也称等概率洗牌算法,其实发牌的过程和我们抽签一样的,大学概率论讲过抽签是等概率的,同样洗牌算法选中每个元素是等概率的。...用洗牌算法思路从1、2、3、4、5这5个数中,随机取一个数 [640?...int randX = randNumber/M;    int randY = randNumber%M;        swap(iX,iY,randX,randY); } 更多案例可以go公众号:C语言入门到精通

3K2219

C语言银行家算法

算法简介 银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。...算法目的 为了了解系统的资源分配情况,假定系统的任何一种资源在任意时刻只能被一个进程使用,任何进程已经占用的资源只能由进程自己释放,而不能由其他进程抢占,当进程申请的资源不能满足时,必须等待。...因此只要资源分配算法能保证进程的资源请求,且不出现循环等待,则系统不会出现死锁。 算法原理 在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。...银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。 设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。...安全性检查算法 (1)设置两个工作向量Work=AVAILABLE;FINISH (2)从进程集合中找到一个满足下述条件的进程, FINISH==false; NEED<=Work; 如找到,执行(

4.4K20

老人跌倒检测识别算法 基于图像识别

选用背景差分法和形态学算法提取目标骨架,骨架提取经历九步:图像灰度化,背景差分法提取目标轮廓,使用CLAHE算法增强对比度,高斯滤波,Solel算子进行边缘检测,小波去噪,最大类间误差法二值化,形态学运算和中值滤波...然后用基于人体比例的方法初步判断跌倒情况,再用基于运动趋势的精准判断跌倒情况。算法总体效果可以,误检较少。...,再用基于运动趋势的精准判断跌倒情况。...1.2 目标提取算法背景差分法利用当前待处理视频帧图像与已经建模好的背景图像进行差分运算,利用阈值处理减少图像中的噪声干扰。...然后用基于人体比例的方法初步判断跌倒情况,再用基SVM精准判断跌倒情况。算法总体效果可以,误检较少。

25200
领券