通訊!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,因此更新最近鄰點和最近鄰距離?;厮莸剑?,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億元!英聯股份擬投建鋰電復合銅箔/鋁箔生產線
- []]儲能有望延續高景氣度 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余個
- 熱點評!長安期貨原油早評:俄油能否順利出口左右油價走向,建議觀望或短差操作
- 全球動態:又一個償債高峰 壓力再次給到房企