通讯!k-d树和bbf算法 一直递归子树的数据点集算法
最近还是一直在研究SIFT算法,而SIFT特征点匹配是一个比较经典的问题,使用暴力匹配的话确实可以得到结果,但是运行速度较慢。我的计算机处理是i5的二代系列,匹配两张各检测有2000+个SIFT特征点的图像,通过正反匹配(即取图像1与图像2的匹配结果余图像2和图像1的匹配结果的交集),再加上OpenMP多线程加速,使用暴力匹配,大概要花20多秒,还是比较慢的。所以这一周啥也没做,一直在实现kd树和对应的bbf算法。下面详细介绍下种数据结构。
一、k-d树的介绍与实现
(相关资料图)
1.1 k-d树的创建
k-d树其实就是一种树形的数据结构,但是在创建这棵树时有一些固定的规则。下面来讲一下kd树的创建过程
输入:一组数据点集,n个数据点,每个点有m维
输出:k-d树的根结点指针
过程:(1)分别计算这n个数据点在m维中各个维度的方差,取方差最大的维度dim作为分割维度;
(2)把数据点集按照该维度中值的大小进行排列,选择具有中间值的点作为该树的根结点;
(3)前半部分点进行如(1)、(2)所示的递归操作,选出的递归子树的根节点作为(2)中得到的根节点的左孩子;
同理,后半部分也这样操作。如此一直递归,直到各个递归子树的数据点集为空则算法截止。
例子:以2维平面上的点集为例,设有6个二维数据点{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}。
(1) 首先计算这6个点的横坐标和纵坐标的方差值,横坐标的方差值为39,纵坐标上的方差值为28.63,因此第一次分割取横坐标上的值作为分割标准。把这些点按照横坐标进行排序得到{(2,3),(4,7),(5,4),(7,2),(8,1),(9,6)},取中间点为(7,2),因此根节点为(7,2)进行分割,如下图所示:
图1 分割示意图
(2)接下来对{(2,3),(4,7),(5,4)}和{(8,1),(9,6)}分别进行分割,在{(2,3),(4,7),(5,4)}中纵坐标的方差较大,因此按纵坐标进行排序后分割,则(5,4)为(7,2)的左孩子,{(8,1),(9,6)}中也是纵坐标方差较大,因此选纵坐标进行排序后分割,这里算则(9,6)作为(7,2)的右孩子。
(3)依次递归进行分割,最终形成的分割图和树状结构如下所示:
图2 上例中形成的分割图
图3 上例中形成的树状结构
1.2 k-d树的查询
k-d树建立好以后,需要查询它的最近邻,方法如下:
(1)查询点与k-d树的根节点进行比较,比较两者在根节点划分时的维度的值的大小,若查询点在该维的值小,则进入根节点的左子树,否则进入右子树。依次类推,进行查找,直到到达树的叶子节点。
(2)设当前到达的叶子节点为目前的最近邻(注意:可能并非真正的最近邻),并且记录目前的最近邻距离。沿着来时的路向前回溯,让目前的最近邻距离与查找点与当前叶子节点的父节点形成的分割超平面的距离进行比较,若当前最近邻比较小,则不用遍历当前叶子节点的父节点的另一边,否则需要遍历查找以更新最近邻距离和最近邻节点。
(3)按照(2)中所说依次遍历,直到到达根节点为止,查询结束。
上面的说法比较抽象,下面用两个博客中广为流传的例子进行解读。
假设我们需要查找点(2.1,3.1)在前面中提到的二维点集中的最近邻点。我们首先判断(7,2)的分割标准是x轴,而2.1<7,因此查找点进入(7,2)的左子树;而(5,4)的分割标准是y轴,而3.1<4,因此我们进入(5,4)的左子树,即找到叶子节点(2,3);把(2,3)作为查找点(2.1,3.1)的临时最近邻点,最近邻距离为0.1414,向前回溯。
因为查找点到(5,4)的距离大于到(2,3)的距离,因此最近邻点和最近邻距离保持不变,因此以(2.1,3.1)为原点,以0.1414为半径画圆,该圆与(5,4)确定的分割线没有相交(即当前最近邻距离比查找点到(5,4)所确定的分割线距离要小),因此不需要进入(5,4)的右子树,继续回溯,同理,最近邻点和最近邻距离不变,以(2.1,3.1)为原点,以0.1414为半径画圆,该圆与(7,2)所确定的分割线也没有相交,因此也不需要进入(7,2)的右子树;回溯结束。因此(2,3)就是真正的最近邻节点。
如下图所示:
图4 (2.1,3.1)查询最近邻示意图
上面这个例子比较简单,下面我们看一个复杂一些的例子,假设我们要查找(2,4.5)的最近邻。
同上,首先我们判断(7,2)的分割标准是x周,而2<7,因此到(7,2)的左孩子进行查找,而(5,4)的分割标准为y轴,而4.5>4因此3.041,因此需要到(5,4)的右孩子进行查找,找到了叶子节点(4,7)。那么我们把(4,7)作为查找点的临时最近邻,最近邻距离为3.202,向前回溯,可以看到到(5,4)的距离为3.041,因此更新(5,4)为最近邻点,最近邻距离为3.041。然后以(2,4.5)为圆心,以3.041为半径画圆,可以看到该圆与(5,4)确定的分割线相交,因此需要遍历(5,4)的左子树。如下图所示:
判断(2,4.5)到(2,3)的距离为1.5,因此更新最近邻点和最近邻距离。回溯到(7,2),可以判断不需到(7,2)的右子树进行查找,如下图所示:
1.3 代码实现
k-d树的实现还算是比较简单的,在我的实现过程中遇到的问题是开始我没有理解前面提到的圆与分割线相交的意义,所以实现时遇到了一些问题,现在把我实现的kd树的核心算法一一介绍。 (1)kd树的结点数据结构
class kdNode{public:kdNode(Point &data);~kdNode();Point data;//数据点的信息int sort_dim;//数据点的划分维度kdNode *left;kdNode *right;kdNode *parent;};
数据结构算是比较简单的,只包含了数据点的信息(Point类是我自己定义的),left和right是左右孩子的指针,parent是父节点指针,在回溯时会用到;sort_dim是记录当前结点时按照哪个维度进行划分的,在回溯时判断最近邻和查找点到当前结点确定的分割超平面的距离哪个大时会用到。 (2)创建kdTree代码
//创建kd树,keypoints为点数据,parent表示当前树的双亲,默认为NULLkdNode* kdTree::createTree(vector&keypoints, kdNode *parent){if (keypoints.size() == 0)//若数据点集为空,则停止创建return NULL;int sort_dim = findSortDim(keypoints, parent);//确定分割的维度kdNode *tmp = findMidNode(keypoints);//找到分割结点int sort_num = keypoints.size() / 2;vectorleftKeyPoints(keypoints.begin(), keypoints.begin() + sort_num);vectorrightKeyPoints(keypoints.begin() + sort_num + 1, keypoints.end());tmp->sort_dim = sort_dim;//记录当前结点的分割维度tmp->left = createTree(leftKeyPoints, tmp);//递归调用,创建左子树tmp->right = createTree(rightKeyPoints, tmp);//递归调用,创建右子树tmp->parent = parent;//记录父节点return tmp;//返回当前树的根节点}
这里面findMidNode函数是找到当前数据点的分割结点,在这里面对keypoints按照各点在分割维度上的大小进行了排序,因此后面直接把数据点集分成了两部分。 (3)查找最近邻结点
//通过kd树查找距离指定点node最近的点//root是查找的kd树的根节点//point是查找点nearestNodeInfo& kdTree::findNearestNode(kdNode* root, const Point& point){if (root == NULL){return nearestNodeInfo();}kdNode *p = root;//通过kd树的二叉搜索,顺着搜索路径很快就能找到最邻近的近似点while ((p->left != NULL) || (p->right != NULL))//只要p不是指向叶节点{int sort_dim = p->sort_dim;if (point.data[sort_dim] <= p-="">data.data[sort_dim]){if (p->left == NULL)break;p = p->left;}else{if (p->right == NULL)break;p = p->right;}}float min_dis = FLT_MAX;//距离查找点最近的距离float secmin_dis = FLT_MAX;//距离查找点的次近邻距离int min_subscript = 0;min_dis = calcDistance(point, p->data);//计算查找点与近似邻近叶子节点的距离min_subscript = p->data.subscript;//记录最近邻结点在数据点集中的下标,以便以后找到它kdNode* q = p;kdNode* tmp = q;//开始回溯while (q != root){q = tmp->parent;//当前结点距离查找点的距离float tmp_dis = calcDistance(point, q->data);//当tmp_dis小于最近邻距离时,更新最近邻和次近邻if (tmp_dis < min_dis){secmin_dis = min_dis;min_dis = tmp_dis;min_subscript = q->data.subscript;}//当tmp_dis大于等于最近邻且小于次近邻时,更新次近邻else if (tmp_dis == min_dis || tmp_dis < secmin_dis){secmin_dis = tmp_dis;}//查找点距离当前结点构成的区域分割线的垂直距离float sortdim_dis = std::fabs(point.data[q->sort_dim] - q->data.data[q->sort_dim]);//若垂直距离小于距离当前结点的距离//则证明以查找点为中心,以到当前结点距离为半径画圆,会与该结点构成的区域分割线相交if (sortdim_dis < min_dis){nearestNodeInfo tmpResult;if (tmp == q->left){tmpResult = findNearestNode(q->right, point);}else if (tmp == q->right){tmpResult = findNearestNode(q->left, point);}elsecout << "q is not parent of tmp" << endl;//tmpDis为查找点距离当前结点的另一边的子树的最小距离float tmp_nearest_dis = tmpResult.nearest_dis;float tmp_sec_nearest_dis = tmpResult.sec_nearest_dis;//当子树中距离查找点的最小距离小于当前记录的最邻近距离时,更新最近邻和次近邻距离if (tmp_nearest_dis < min_dis){secmin_dis = min_dis;min_dis = tmp_nearest_dis;min_subscript = tmpResult.point_subscript;}//当子树中距离查找点的最小距离在最近邻和次近邻距离之间时,更新次近邻距离else if (tmp_nearest_dis == min_dis || tmp_nearest_dis < secmin_dis)secmin_dis = tmp_nearest_dis;//当子树中距离查找点的次近邻距离小于更新后的次近邻距离时,再次更新if (tmp_sec_nearest_dis < secmin_dis)secmin_dis = tmp_sec_nearest_dis;}tmp = q;}nearestNodeInfo result(min_dis, secmin_dis, min_subscript);return result;}
这里的nearestNodeInfo表示的是最近邻距离,次近邻距离和最近邻点在数据点集中的下标,为了后面的SIFT算法会用到。 上面的描述就是k-d树的建立和利用k-d树找最近邻的方法了。在实际应用中k-d树更加适合于低维的数据中,或者说如果数据量远大于数据的维度的时候,使用k-d树的效率与线性查找的方法相比还是有很大的提升的。但是我在实际应用时,一张图像中通常有2000+个特征点,而SIFT特征为128维的,所以加速效果也不是很好。实际上,在我的实验中,甚至不如暴力匹配的效率高(当然,这可能跟我的代码质量有关)。因此也就引出了我们接下来要介绍的bbf算法。
前面讲到了用k-d树对于高维的数据进行最邻近查询时实际上效率并不高,这里介绍一个算法用以加速k-d树对于高维数据的处理。
二、bbf(Best Bin First)算法介绍与实现
根据前面k-d树的搜索过程我们可以知道,在搜索时首先沿着kd树找到叶子节点,然后依次回溯,而回溯的路程就是前面我们查找叶子节点时逆序,因此进行回溯时并没有利用这些点的信息。我们接下来介绍的算法就是利用这些信息,回溯时给各个需要回溯的结点以优先级,这样找到最近邻会更快。接下来详细介绍bbf算法的流程。 其实bbf算法的思想比较简单,通过对回溯可能需要的路过的结点加入队列,并按照查找点到该结点确定的超平面的距离进行排序,然后每次首先遍历的是优先级最高(即距离最短的结点),直到队列为空算法结束。同时bbf算法也设立了一个时间限制,如果算法运行时间超过该限制,不管是不是为空,一律停止运行,返回当前的最近邻点作为结果。 bbf的算法流程如下: 输入:kd树,查找点x 输出:kd树种距离查找点最近的点以及最近的距离 流程:(1)若kd树为空,则设定两者距离为无穷大,返回;如果kd树非空,则将kd树的根节点加入到优先级队列中; (2)从优先级队列中出队当前优先级最大的结点,计算当前的该点到查找点的距离是否比最近邻距离小,如果是则更新最近邻点和最近邻距离。如果查找点在切分维坐标小于当前点的切分维坐标,则把他的右孩子加入到队列中,同时检索它的左孩子,否则就把他的左孩子加入到队列中,同时检索它的右孩子。这样一直重复检索,并加入队列,直到检索到叶子节点。然后在从优先级队列中出队优先级最大的结点; (3)重复(1)和(2)中的操作,直到优先级队列为空,或者超出规定的时间,返回当前的最近邻结点和距离。 实现代码如下:
nearestNodeInfo& kdTree::findNearestNode_bbf(kdNode* root, const Point& point){if (root == NULL)return nearestNodeInfo();kdNode *p = root;float min_dis = FLT_MAX;//最近邻距离float sec_min_dis = FLT_MAX;//次近邻距离int min_subscript = 0;//最近邻点在点集中的下标//优先级队列,查找点到当前点确定的分割超平面距离越小优先级越大priority_queuepri_queue;//priorityInfo类型包含了如下信息://(1)当前的结点指针,指向kdNode类型//(2)当前点到查找点的欧式距离//(3)以及查找点到当前点确定的分割超平面的距离pri_queue.push(priorityInfo(p,calcDistance(point,root->data), fabs(point.data[root->sort_dim]-root->data.data[root->sort_dim])));int t = 0;//这里没有记录时间,使用t记录尝试更新最近邻的次数while (!pri_queue.empty()){t++;priorityInfo tmp = pri_queue.top();pri_queue.pop();int sort_dim = tmp.ptr->sort_dim;//如果最近邻距离小于查找点到当前点确定的分割超平面的距离则不访问该点的分支if (min_dis < fabs(point.data[sort_dim] - tmp.ptr->data.data[sort_dim]))continue;//记录当前点到查找点的欧式距离float tmp_dis = calcDistance(point, tmp.ptr->data);//判断是否更新最近邻、次近邻距离if (tmp_dis < min_dis){sec_min_dis = min_dis;min_dis = tmp_dis;min_subscript = tmp.ptr->data.subscript;}else if (tmp_dis == min_dis || tmp_dis < sec_min_dis){sec_min_dis = tmp_dis;}kdNode* q = tmp.ptr;//遍历以当前点为根的子树,直到叶子节点while (q->right != NULL || q->left != NULL){t++;int s_d = q->sort_dim;if (point.data[s_d] <= q-="">data.data[s_d])//查找点在分割维的大小小于当前点分割维的大小{if (q->left != NULL)//进入左孩子之前判断左孩子是否为空{if (q->right != NULL)//把右孩子加入节点时判断右孩子是否为空{float distance = calcDistance(point, q->right->data);int s_t = q->right->sort_dim;pri_queue.push(priorityInfo(q->right, distance,fabs(point.data[s_t]-q->right->data.data[s_t])));}q = q->left;}elsebreak;}else{if (q->right != NULL){if (q->left != NULL){float distance = calcDistance(point, q->left->data);int s_t = q->left->sort_dim;pri_queue.push(priorityInfo(q->left, distance,fabs(point.data[s_t]-q->left->data.data[s_t])));}q = q->right;}elsebreak;}//更新最近邻float dis = calcDistance(point, q->data);if (dis < min_dis){sec_min_dis = min_dis;min_dis = dis;min_subscript = q->data.subscript;}else if (dis == min_dis || dis < sec_min_dis)sec_min_dis = dis;}if (t > 600)//如果更新次数超过600次则直接退出循环,返回当前最近邻结果break;}nearestNodeInfo result(min_dis, sec_min_dis, min_subscript);return result;}
这里t取600时运行情况已经同暴力查找时效率相当,如果想要加速,把阈值设的低一些。但是如果阈值设的太低会造成匹配结果较差,需要在效率和正确率上进行取舍。
标签:
相关推荐:
精彩放送:
- []最新资讯:华电、华润等7家企业签约阿拉善腾格里沙漠12GW风光基地项目
- []分享100个有趣的python项目 值得收藏
- []低温地区新能源汽车能耗逐年下降
- []四年一遇:ngix+rtmp+ffmpeg的直播效果
- []最新资讯:3MW/6MWh!粤北地区首个用户侧智能组串式储能项目成功投运
- []焦点快看:【Linux操作系统】系统调用和库函数编程基础知识
- []当前快报:重庆:争夺西部第一机场?
- []环球要闻:2.5万吨!华友钴业子公司广西巴莫首批正极材料产品下线
- []硅片反弹!中环硅片全线涨价0.82~1.15元/片 ,最高涨幅近15.5%!
- []热点在线丨春秋航空:疯狂
- []【速看料】凤形股份:为保证所有投资者平等获悉公司信息,公司将在各期定期报告中披露对应时点的股东人数信息
- []滨江集团:截至2023年1月31日,公司合并普通账户和融资融券信用账户的在册股东总户数为31303户
- []金科联盟解体
- []有研粉材:定期报告对应时点之外的股东人数不属于规则规定的强制信息披露范畴
- []最新:财面儿丨首开股份:近期为子公司提供财务资助约3亿元
- []每日短讯:房企关注函+1!阳光城巨额亏损被深交所“盯”上
- []全球视点!财面儿丨保利置业:1月份合约销售额49亿元 同比增长105%
- []珠城科技:公司的产品主要应用于消费类家电、智能终端等,同时以汽车领域作为公司未来的重要发展方向
- []焦点短讯!农民进城买房,一套补贴5万!河南一地启动购房促销活动
- []【天天聚看点】盛新锂能发行GDR并在瑞交所上市获批 2022年净利同比预增超5倍
- []豪掷31亿元!英联股份拟投建锂电复合铜箔/铝箔生产线
- []快讯:中金货币金融研究:1月信贷投放规模可能达到4.8万亿元 规模或创记录
- []储能有望延续高景气度 2023年或成为爆发之年
- []全球视点!银河证券:A股市场进入颠簸期 配置沿几条主线
- []实时:光大证券:半固态电池应运而生 抢占下一代锂电技术制高点
- []湖北省:1GW新型储能示范项目申报启动,锂电项目不参与
- []环球热推荐:春节出游潮退潮后,处处是“坑”
- []关注:储能安全新国标正式发布!储能消防市场将迈向百亿级空间
- []【全球报资讯】近1.6万次!基金经理、机构忙调研
- []天天播报:佳源国际控股:进一步延长交换要约届满期限至3月6日
- []税后工资8000税前是多少?年收入多少要交个人所得税?
- []【天天新视野】西安未央区即将面向全市发放共计1000万元电子消费券
- []焦点速读:一晚七家公司被调查,有公司掩埋凭证,挖出9米宽5米深大坑!数据特区概念爆发
- []全球即时:最新龙虎榜:机构买入润和软件超8000万,知名游资买入广博股份
- []平均工资是税前工资还是税后工资?平均工资是怎么算的?
- []2022平均工资怎么计算?2022年度社会平均工资怎么算?
- []世界热点评!谁是2022旅游出行“预亏王”?
- []脑梗“最爱”1黄,不是花生,平时敞开吃,血脂乖乖降,脑梗不敢放肆
- []全球看点:62度电池跑320公里,4秒内破百,Everrati推出保时捷911纯电版
- []如何给鲜玉米保鲜储存 玉米保鲜储存方法
- []全球快消息!F1威廉姆斯车队发布2023赛季新车涂装
- []今日热闻!建业地产1月合同销售额28.71亿元 同比增长43%
- []环球热资讯!上海现代农业产业园(横沙新洲)规划公布 2035年园区总产值超百亿
- []热门看点:北京数据特区发酵 多家公司摩拳擦掌备战
- []环球时讯:免押金、佣金打折!北京为返工租客筹集53万套优惠房源
- []环球快播:深圳:降低企业用房成本
- []海南推动土地节约集约利用:控制新增建设用地,保障生活用地
- []数码视讯:2月3日公司高管郑海涛减持公司股份合计4.68万股
- []观焦点:天秦装备:2月3日公司高管张澎、王兆君减持公司股份合计11万股
- []世界视点!炼石航空:2月3日公司高管张政减持公司股份合计10万股
- []绿城集团2023年首月总合约销售135亿元 同比下降7.53%
- []世界资讯:中际旭创:2月3日公司高管王军减持公司股份合计10000股
- []焦点快报!时来天地皆同力 2023年或迎来“戴维斯双击”——访重阳投资董事长王庆
- []微头条丨八大券商主题策略:超级快充时代来临!远期市场空间超千亿 充电桩概念风起云涌
- []焦点热门:北交所强势开局 私募看好今年投资机会
- []今日观点!中信证券:内资开始接力外资 成长风格将持续占优
- []当前简讯:灰姑娘的故事简介50字_灰姑娘的故事简介
- []世界实时:土地周报 | 供求价持续低位运行,流拍率接近20%(01.30-02.05)
- []世界信息:深圳二手房交易量呈现快速恢复态势
- []引力传媒:2月3日公司高管罗衍记、李浩减持公司股份合计40万股
- []哈尔滨:鼓励在哈金融机构加大房地产领域信贷投放
- []奇安信:2月1日至2月2日左文建减持公司股份合计1.4万股
- []【环球新要闻】新房周报 | 12城调控放松、多地下调利率,成交回升(01.30-02.05)
- []环球微动态丨资本月报|融资环境有所改善,房企配股较为积极 (2023年1月)
- []今日视点:理工导航:2月3日至2月6日公司高管高志峰增持公司股份合计1.01万股
- []世界今日讯!环球旅讯发力商旅&MICE赛道:推出商旅研习社及年度活动规划
- []全球信息:中交地产:湖南华夏完成减持1.21%股份 重庆渝富减持股份达到1%
- []世界快报:公共车辆全面电动化试点启动,利好充电服务商
- []微信加人限制如何解除_微信加人限制怎么解除
- []环球速讯:由于后者资金问题 大唐集团终止出售厦门商管公司予广西吉顺隆
- []每日观察!天虹股份变更公司签字注册会计师及质量复核人员
- []华侨城A:公司唐镇项目经上海市张江管委会、工商监督部门调查已判定没有违规开发和虚假宣传
- []【全球时快讯】武汉:动态调整住房限购范围 住房限购区域购房的居民家庭可新增一个购房资格
- []世界球精选!财面儿|融信中国1月合约销售额约9.95亿元
- []实时焦点:磁谷科技:公司目前在手订单充足,业务拓展持续稳健进行
- []财面儿丨雅居乐:1月预售金额合计为人民币64.4亿元
- []天天微头条丨财面儿丨金地商置:1月份合约销售额22.96亿元
- []德赛西威:公司严格按照相关法规要求进行财务数据的发布
- []当前资讯!山东新年“1号文件”力促经济复苏 一季度重点项目完成投资6000亿元以上
- []世界焦点!财面儿丨力高集团:1月份合约销售额13.23亿元
- []环球热资讯!金地商置1月合约销售额22.96亿元 同比减少约59.68%
- []中国奥园:以5.84亿元出售珠海翠微项目60%股权
- []全球简讯:长沙:截至今年1月底,盘活存量房1.28万套
- []天天观天下!开开实业:公司是以中医药流通、中医药学服务(中医问诊服务)和服装批发、零售为主营业务
- []哈尔滨:非哈市户籍在哈购新房可享万元补贴
- []美吉姆:公司目前未应用过该软件
- []环球最新:昆船智能:截至2023年1月30日我公司股东总数为29533户
- []天天热议:招商局置地:余志良辞任总经理,黄竞源获委任
- []世界快资讯:思安云创成功签约深能集团智慧能源监控平台及高级应用研发项目
- []储能业务持续向好 南都电源预计2022年扭亏为盈
- []环球通讯!2022锂钴价格背道而驰,2023供应过剩延续钴价继续滑落?
- []观速讯丨业绩持续逆天,还在持续大爆发的龙头,关键已经不贵了
- []一个鼻孔通气的生肖_一个鼻孔通气的危害
- []隆基绿能:拟向全资子公司增资20亿元 推进29GW高效单晶电池项目
- []接入光伏、储能、充电桩等更省事 湖北首个“源网荷储”新型配电网试点建成
- []视讯!孚能科技引领全球动力软包创新 SPS大软包超级电池“攻城掠地”
- []热文:复地(集团)10亿债券将于2月14日兑付及摘牌 票面利率5.60%
- []环球观热点:提供适配房源53万套 北京推出惠民租房服务平台
- []聚焦:【互动掘金】国脉科技:将积极研究ChatGPT与现有技术的融合
- []华瑞股份:截止2023年1月31曰,公司股东人数为10590户
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 焦点速看:中衍期货:美国非农表现强劲给金银压力
- 焦点快播:华测检测:公司回购方案的有效期至2023年3月13日,会按照回购方案积极推进
- 世界新消息丨冠昊生物:本维莫德乳膏其他适应症的研发有序推进中,公司的研发项目进展情况,敬请查阅公司定期报告
- 焦点热讯:武汉:在住房限购区域购房的居民家庭可新增一个购房资格
- 快报:武汉:新出让土地可按照不低于起始价的10%确定竞买保证金
- 环球即时看!武汉:具备条件的大型购物中心、商业综合体和商业街区可设置外摆
- 焦点要闻:印度狂买俄油符合西方利益?美国官员:价格上限机制已落实到位
- 科润新材料完成C轮2.4亿融资 全氟离子膜已应用于钒电池等领域
- 今日快看!*ST必康拟增资子公司并设立孙公司 布局锂电池、电池材料产业
- 资讯推荐:动力电池铝箔产销量同比大增 鼎胜新材2022年净利同比预增逾两倍
- 天天微头条丨电池化学品销量增长 新宙邦2022年营收约96.61亿
- 110亿元!志存锂业拟在新疆阿勒泰投建碳酸锂及正极材料项目
- 名师讲坛 | “二十四史”视角下的《元史》
- 世界新动态:深圳发布金融科技专项发展规划 打造国际影响力金融科技中心城市
- 环球视讯!都城伟业集团接盘鲁能集团转让的郑州鲁能置业100%股权
- 当前热门:2月6日英可瑞涨停分析:充电桩,氢能源/燃料电池,高铁轨交概念热股
- 2月6日江南化工涨停分析:人工智能,民爆,手势识别概念热股
- 环球播报:2月6日汉马科技涨停分析:垃圾分类,氢能源/燃料电池,重卡概念热股
- 处四会五达之地,融人文商业之机——百年阪急的中国宁波之旅
- 世界最新:江阴银行:我行严格遵守监管部门相关规定,目前未开展互联网存款业务
- 【新要闻】衢州开化县一宗商住地因宗地使用条件变更终止出让 起价1.73亿
- 每日速讯:飞行汽车完成今年首飞!万亿市场何时开启?
- 即时:江苏常州金坛盐穴压缩空气储能电站—— 赋能地下盐穴 助力高效用能
- 产销量暴增300%!产线昼夜不停!铜箔为什么这么火?
- 焦点讯息:突发!锂电池着火引发火灾致4死3伤 !
- 天天新消息丨3MW/6MWh!粤北地区首个用户侧智能组串式储能项目成功投运
- 3GWh电芯采购 | 浙商中拓与上海兰钧签订战略合作协议
- 最新消息:上海宝龙实业发展15亿元中票获反馈
- 环球看点!中公教育:根据深交所相关规则,符合需要披露年度业绩预告的情形的公司应在2023年1月31日前进行预告
- 全球看点:中交地产三笔中票项目状态更新为“反馈中” 金额共计22亿元
- 温州生态园开发建设5.4亿元私募债更新为“已反馈”
- 每日热点:【BT金融分析师】瑞幸咖啡或在2023年重新上市,分析师称新店开张速度令人瞩目
- 福州台江区37个老旧小区改造项目启动招标 总投资1.38亿元
- 广州:至2035年推进城市更新约300平方公里 推进旧改项目297个
- 每日快报!奥维通信:公司目前没有涉及相关业务
- 今热点:航发科技:公司将严格执行相关法律法规、公司信息披露制度和内幕信息知情人登记制度的规定
- 焦点消息!两天1500元,租车爆单了
- 能链智电与开瑞新能源达成战略合作 加速商用车电动化进程
- 动态焦点:2019双子座流星雨极大时间_2019双子座流星雨
- 环球热门:山东威海:首套房公积金贷款首付比例下调至20%
- 上海推出今年第一批次集中供应楼盘 涉6958套房源
- 当前热点-内蒙古2023年计划实施重点项目3168个 总投资3.2万亿元
- 【环球快播报】“两会”前多地密集出台稳楼市政策,一二线城市有望率先复苏
- 世界视点!总投资1208亿元 天津滨海新区122个春季重点项目启动开工
- 东南电子:公司主要产品包括 KW 系列微动开关、WS 系列微动开关、MS 系列微动开关等
- 青蛙王子再次荣获企业标准“领跑者”
- 今日热门!酷炫!3D视频中的连南你看过吗?
- 一张图:黄金原油外汇股指"枢纽点+多空占比"一览(2023/02/06周一)
- 天天观焦点:【华安期货】石油化工2月5日周报:复工预期不足,聚烯烃高位回落
- 全球今日讯!山东东营:二套房公积金贷款最高可贷60万元 首付比例三成
- 天天头条:美联测量:港铁小蚝湾1期商住项目估值料逾52亿港元
- 环球观速讯丨山东威海:购买首套自住房公积金贷款首付比例下调至20%
- 威海:首套自住住房公积金贷款首付比例下调至20%
- 每日报道:焦作万方:公司年度报告根据深圳证券交易所相关填报要求进行填报披露,不存在应披露而未披露信息
- 当前热讯:市建局韦志成:香港观塘流标商业地研增住宅元素
- 全球焦点!孚日股份:关于公司股权转让情况,届时请关注公告;公司锂电池电解液添加剂项目正在紧张有序的推进
- “天选之子”中国出境旅行团:从吊车尾到拯救全球旅游
- 仟那集团CEO陈坤峰:低调做酒店,高调做产品
- 团队出境游今日重启,携程:节后一周预订量大增超3倍
- 天天热门:深圳出台措施扩大消费刺激中小微企业市场需求 鼓励发放消费补贴
- 【热闻】前财长萨默斯:美国经济软着陆可能性增加 但仍未脱离困境
- 绝不降价的蔚来“折腰”了?这并不是新势力的最优解!
- 北辰世纪中心28.61亿ABS获上交所受理
- 重点聚焦!保利挂牌转让12家与碧桂园合作项目公司股权 合计近23亿元
- 今日热文:宜春天虹购物中心拟于2月6日闭店 损失合计约3500万元
- 每日短讯:黄金市场分析:1825-23美元附近可能成为黄金买家的最后防线
- 当前通讯!港财政司陈茂波︰今年本港经济肯定较去年好
- 天天短讯!国信期货早评:担心美联储可能继续加息,油价大幅回调
- 今日快讯:石油和天然气需求又迎新利好?IEA:中国经济反弹力度料超预期
- 今日最新!美联新材:截止至2023年1月31日,公司股东总户数24,832户,截至2月1日的数据无法查询
- 世界信息:西藏天路:根据市场竞争压力和国企改革要求,公司实施了股权激励
- 2月6日汇市观潮:欧元、英镑和日元技术分析
- 【全球热闻】广东各地多措并举确保春季开学顺利
- 热讯:年少气盛的反义词是什么?年少气盛是什么意思?
- 三相电度表怎么看度数?家用电器使用注意事项有哪些?
- 当前视讯!京韵大鼓三大流派是什么?有什么艺术特征?
- 天天短讯!汽车暖风机是什么?汽车暖风机的作用是什么?
- 什么是电压差动保护?电压差动保护怎么理解?
- 当前消息!一两等于多少克?两和克之间怎么换算?
- 楼梯踏步防滑条怎么做?楼梯踏步防滑条做法是怎样的?
- 【世界速看料】礼香的真实结局是什么?礼香的真实剧情介绍?
- 大发地产:1月合同销售金额约2.51亿元
- 【天天速看料】银城国际控股:1月合约销售额约为4.84亿元
- 珈伟新能:公司的新能源电力业务包括整合并建立项目开发与运维、EPC总承包、电站资产运营这三大业务
- 世界今热点:【东海期货2月6日产业链日报】能化篇:弱现实担忧增加,原油价格回调
- 教资考试成绩什么时候公布?教师资格证考试笔试多少分及格?
- 天天百事通!书香气质女孩名字有哪些?书香气质女孩名字大全?
- 全球微头条丨2月6日贵金属板块跌幅达4%
- 万达商业拟发行3年期美元高级无抵押债券 初始指导价12.5%区域
- 每日头条!怡合达:截至2023年1月31日,公司股东总数为7,724户
- 中信建投期货2月6日早间交易策略
- 热点在线丨广哈通信:您可致电020-35812869,将有工作人员为您解
- 大连旅顺水师营5175.95平米宅地使用权挂牌交易截止日期延后
- 焦点热文:风范股份:感谢您对公司的关注和关心,公司并购事项在正常推进中,具体进展情况以公司后续发布的公告为准
- 每日信息:锐叔论市 低点或已探明,但短线应还有震荡!
- 【世界播资讯】黄光裕失去控股席位,国美迷途何时归
- 全球观速讯丨石家庄交投集团摘得石家庄高新区4宗地块 总成交价12.8亿元
- 今日热文:北京通州远洋乐堤港将于6月底开业 预计引入品牌260余个
- 热点评!长安期货原油早评:俄油能否顺利出口左右油价走向,建议观望或短差操作
- 全球动态:又一个偿债高峰 压力再次给到房企