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

mser 最大稳定极值区域(文字区域定位)算法 附完整C代码

mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化。...自那时起就有一块石头没放下,想要找个时间好好理理这个算法。 学习一些它的一些思路。 因为一般我学习算法的思路:3个做法, 第一步,编写demo示例。 第二步,进行算法移植或效果改进。...第三步,进行算法性能优化。 然后在这三个过程中,不断来回地验证,实测。 任何事情,一下子囫囵吞枣,容易呛到。 找了不少资料,mser这方面的资料还挺少。...err_msg, err); exit_code = 1; } /* quit */ return(exit_code); } 算法有两种模式...可参照《图片文档倾斜矫正算法 附完整c代码》中判断是否为文本图片的方式进行算法思路的改进。 效果图例: ? ? ? ? 以上,再一次抛砖引玉。 若有其他相关问题或者需求也可以邮件联系俺探讨。

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

电脑语言区域-“区域和语言”影响Windows系统稳定_操作系统

跑到这位MM的电脑上面一看,原来这位MM在玩中文繁体游戏的时候没有将“区域和语言”中的系统默认语言改为“中文繁体”;而在“日期和时间”选项中这位MM同学竟然将系统时间设在了2013年,真是超前呀。...哈哈,千万不要小看了这两个选项电脑语言区域,在中,看准时间,搞清地点可是相当重要的。   区域和语言   在 XP中,区域和语言选项是一个非常重要的组件,它增强了系统在多种语言环境中的应用能力。...在第一个选项卡“区域选项”中,我们能够看到“标准和格式”,下面的下拉菜单中有不同国家和地区的语言。选择不同地区的语言就会改变日期、货币、数字和时间的显示方式。   ...“高级”选项卡是整个“区域和语言”选项中最重要的一个部分。这里的“非 程序的语言”在运行繁体中文游戏和日文游戏的时候都会应用到。   众所周知 XP内核是编码。但游戏程序几乎都不是编码。...依次打开“控制面板→区域和语言选项→高级→非程序的语言”电脑语言区域,在下拉菜单选择“中文(香港特别行政区)”就可正确运行繁体中文版游戏程序。不需要像那样安装内码转换程序。

82720

网络最大算法—EK算法

前言 EK算法是求网络最大流的最基础的算法,也是比较好理解的一种算法,利用它可以解决绝大多数最大流问题。...但是受到时间复杂度的限制,这种算法常常有TLE的风险 思想 还记得我们在介绍最大流的时候提到的求解思路么? 对一张网络流图,每次找出它的最小的残量(能增广的量),对其进行增广。...没错,EK算法就是利用这种思想来解决问题的 实现 EK算法在实现时,需要对整张图遍历一边。 那我们如何进行遍历呢?BFS还是DFS?....^#) 所以我们选用BFS 在对图进行遍历的时候,记录下能进行增广的最大值,同时记录下这个最大值经过了哪些边。...通过上图不难看出,这种算法的性能还算是不错, 不过你可以到这里提交一下就知道这种算法究竟有多快(man)了 可以证明,这种算法的时间复杂度为 大体证一下: 我们最坏情况下每次只增广一条边,则需要增广

4.7K80

粒子群算法(PSO)的Python实现(求解多元函数的极值

文末可以留言了 PSO算法算是寻优算法中比较简单的一种,其大概思想是: 现在我们计算: 的最大值,每一个变量的取值范围都是(1,25)。...然后在100个粒子中选出适应度最大的粒子,作为初始的最优粒子。 如果没有达到迭代次数,则先对每一个粒子的 进行更新,然后再利用更新后的 对其 进行更新,更新完后重复第二步,选出一个最优粒子。...因此,PSO算法的核心其实就是两个更新公式: 其中 都是初始时候预设好的; 表示0到1间的随机实数; 表示上一轮更新结束后该粒子的最大适应度(每一轮更新后每个粒子的最大适应度会相应变化);...表示上一轮更新结束后所有粒子的最大适应度,也即所有 中的最大值。

1.4K30

1.特征点检测与匹配

同时取得最大值时,C才能取得较大值 避免了特征值分解,提高计策计算效率 非极大值抑制 在特征点附近,其他点的响应也比较大。...所以选取局部响应最大值,避免重复检测 Harris 角点检测 算法流程 计算图像水平和垂直方向的梯度 但是在计算梯度之前,需要对图像进行滤波,一般进行高斯平阀,避免出现变化剧烈的值 计算每个像素位置的...不同尺度下的LoG响应值不具有可比性 构建尺度空间,同时在位置空间和尺度空间寻找归一化LoG极值(极大值/极小值)点作为特征点 LoG特征检测算法流程 ? LoG特征检测效果好,但是计算量比较大。...旋转 不变性、 尺度 不变性 、亮度 变化 不变性 ,对视角变化、 仿射 变换有一定程度的稳性 SIFT特征点非常稳定和鲁棒,但是计算量很大,对于要求稳定的图像建模可以采用。...适用于微小变化的图像 对图像存在明显的旋转、尺度、光照和透视变换时不稳定 SIFT描述子--旋转主方向 根据主方向对支持区域进行旋转,并通过双线性插值重构 ?

1.9K40

OpenCV SIFT特征算法详解与使用

星标或者置顶【OpenCV学堂】 干货文章与技术教程第一时间送达 SIFT概述 SIFT特征是非常稳定的图像特征,在图像搜索、特征匹配、图像分类检测等方面应用十分广泛,但是它的缺点也是非常明显,就是计算量比较大...关键点精准定位与过滤 对得到的每层DOG图像,计算窗口3x3x3范围除去中心点之外的26点与中心点比较大小,寻找最大值或者最小值(极值点),如下图: ?...原因在于图像得到像素坐标是离散的,尺度空间也是离散的间隔,每个极值点P(x, y, s)三维空间中不一定是真正的连续空间的极值点,以二维的曲线为例,得到蓝色是离散空间极值点,实际极值点是红色点,如下图所示...我们对特征点周围的像素块计算角度方向直方图,在计算直方图之前首先需要对图像进行梯度计算,这里可以使用SOBEL算子,然后根据dx与dy计算梯度和与角度,这里使用的高斯权重,所以在梯度之前,首先需要对ROI区域进行高斯模糊...(max peak)对应的角度就是关键点的角度方向,对于大于max peak*85%的bin也作为方向指派给关键点,这样同一个关键点因为有多个方向在描述子生成的时候就会生成多个描述子,从而增加了特征的稳定性与抗干扰能力

8.3K33

SIFT算法详解

SIFT算法的特点有: 1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性; 2. ...原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小。这样进行模糊处理比其它的均衡模糊滤波器更高地保留了边缘效果。 ?...当然这样产生的极值点并不全都是稳定的特征点,因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应。 3.6 构建尺度空间需确定的参数 ?...4、关键点定位 以上方法检测到的极值点是离散空间的极值点,以下通过拟合三维二次函数来精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性...过小的点易受噪声的干扰而变得不稳定,所以将 ? 小于某个经验值(Lowe论文中使用0.03,Rob Hess等人实现时使用0.04/S)的极值点删除。

4.2K42

SIFT特征点提取「建议收藏」

它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结。...另外,过小的点易受噪声的干扰而变得不稳定,所以将 小于某个经验值(Lowe论文中使用0.03,Rob Hess等人实现时使用0.04/S)的极值点删除。...2.2.2、消除边缘响应 一个定义不好的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。DOG算子会产生较强的边缘响应,需要剔除不稳定的边缘响应点。...3.2、特征点主方向的确定 方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。...4.1、特征的生成过程 4.1.1、确定计算描述子所需的区域 将关键点附近的区域划分为d*d(Lowe建议d=4)个子区域,每个子区域作为一个种子点,每个种子点有8个方向。

1.1K20

算法】相邻最大差值

问题描述 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N) 例子: 5,9,8,3,15 那么排序后的数,3,5,8,9,15,因此相邻最大差值为15-9=6 解题思路 由于时间复杂度要求为...这里我们需要借助桶排序的思想: 1)找出数组的最大值max和最小值min 2)将区间均等的划分为 N + 1份,即有N + 1个桶。...依次比较每两非空桶,即后桶的min减去前桶的max 的差值,即可获得最大的差值 实现代码 public static int maxGap(int[] nums) { if (nums ==...null || nums.length < 2) { return 0; } // 1)找出数组的最大值max和最小值min int max =...// 依次比较每两非空桶,即后桶的min减去前桶的max 的差值,即可获得最大的差值 for(int i = 0; i <= len; i++) { if (hasNum[i]) {

1.4K40

【手撕算法】基于队列实现的区域增长分割算法

前言 上一篇介绍了深度搜索DFS和广度搜索BFS两个算法,本文就是基于BFS算法实现的区域增长算法。...区域增长算法简介 区域增长算法的原理非常简单,就是以一个种子点作为生长的起点,然后将种子周围的点(可以是四邻域也可以是八邻域)进行筛选(筛选条件可以是与种子点像素值是否接近,或者像素梯度是否小于阈值等等...程序运行效果 动图: 本程序运行生成三个窗口: 【原图】用来观看原图 【种子图】会包含鼠标点击生成的红色种子 【种子增长图】显示了每一个种子所增长出来的区域,为二值图 算法实现 #define...waitKey(1); vcGrowPt.push(ptGrowing); //将下一个生长点压入栈中 } } } } } 区域增长函数采用广度搜索算法...BFS,基本算法思想: 声明一个队列,并将函数传入参数中的种子坐标点压入队列。

61730

☆打卡算法☆LeetCode 130. 被围绕的区域 算法解析

一、题目 1、算法题目 “给定一个矩阵,矩阵由字符X和O组成,找出所有被X包围的区域,将区域内的所有O替换成X。” 题目链接: 来源:力扣(LeetCode) 链接: 130....被围绕的区域 - 力扣(LeetCode) (leetcode-cn.com) 2、题目描述 给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域...,并将这些区域里所有的 'O' 用 'X' 填充。...标记所有与它直接或间接相连的O,遍历这个矩阵,对于每一个字母: 如果该字母被标记过,则该字母不被包围,将其改成字母O 如果该字母没有被标记,则该字母被包围,将其改成字母X OK,思路有了,接下来就是使用深度优先算法去遍历搜索实现标记操作...然后标记所有在边界的O以及跟边界的O相连的O,然后使用深度优先搜索算法,根据不同的情况进行替换即可。

18440

☆打卡算法☆LeetCode 85、最大矩形 算法解析

一、题目 1、算法题目 “给定包含0和1的二维矩阵,找出只包含1的最大矩阵,返回其面积。” 题目链接: 来源:力扣(LeetCode) 链接:85....最大矩形 - 力扣(LeetCode) (leetcode-cn.com) 2、题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积...首先,说一下暴力解法:列举所有可能出现的矩形,枚举矩形所有的左上角和右下角坐标,并检查该矩形是否是面积最大的,但是这样做时间复杂度过高,会超时。我发现在学算法之前我写出来的算法都是暴利解法。。。...那么就可以使用单调栈的做法,找到最高的柱子,并找到它左右的最大高度,拼接成最大的矩形,得到面积就是想要的结果。...思路就是: 枚举矩形的下边界,枚举下边界的每一列的高度 找到最高的柱子向左右寻找最大的矩形 得到矩形求出面积

53520
领券