MSER

MSER步骤

  1. 改变阈值,进行极值区域的生成
  2. 稳定区域的判断

极值区域的生成

几个变量的定义(个人理解):

struct ER
{
	struct Hist *hist;
	vector<cv::Point> contours;
	int gray;
	int size;
};
struct Hist
{
	vector<cv::Point> contours;
	int gray;
	int size;
	struct Hist *child;
};
vector< ER >er;//记录水坑
vector< Hist> hist //记录水坑抬高的历史
vector<vector<Point>> BD;//记录水坑的边界 第一维一共256维,不同的分别代表不同的像素值
ER *cur_er;
Hist *cur_er;
vector<Point> *cur_bd;
int cur_water;//当前水位值
int new_water;//新水位值
Point
Created with Raphaël 2.2.0 开始 在er中压入gray=255的空ER; 在图像中选一点,根据它设定cur_water,cur_pos 建一个空ER,并压入到er中并赋值给cur_bd cur_bd->gray=cur_water cur_pos所有的邻域都访问到了 将此点的位置插入到cur_bd->contours,cur_bd->size++ BD栈不为空? 在BD中弹出最小的gray值并赋值new_water,cur_pos new_water < cur_water? 新建一个Hist new_hist,并将cur_er的相关值赋给new_hist cur_hist->child = new_hist,将new_hist入栈,且置cur_hist=new_hist 将old_er->contours合并到cur_er->contorus,更新cur_er->size cur_water=new_water 结束 yes yes no yes no
Created with Raphaël 2.2.0 开始 在er中压入gray=255的空ER; 在图像中选一点,根据它设定cur_water,cur_pos 建一个空ER,并压入到er中并赋值给cur_bd cur_bd->gray=cur_water cur_pos未访问到所有的邻域 访问未访问的邻域,并设置new_water,new_pos new_water < cur_water 将cur_pos压入到bd栈中 cur_pos=new_pos,cur_water=new_water 将new_pos压入到bd栈中 yes yes no

参考链接1:https://blog.csdn.net/roslei/article/details/72918033
参考链接2:https://blog.csdn.net/a664607530/article/details/79319156
参考链接3: http://www.cnblogs.com/shangd/p/6164916.html
参考链接4:http://www.micc.unifi.it/delbimbo/wp-content/uploads/2011/03/slide_corso/A34 MSER.pdf

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页