基礎版本的基礎版本 直方圖均衡化系列
我們最終所需要的算法名字是:Contrast Limited Adaptive Histogram Equalization限制對比度自適應直方圖均衡化,每個單詞取首字母可以縮寫為:CLAHE
直方圖的原理以及作用可以參考這里,總之就是,算最終的均衡化是經歷過計算直方圖以及累積分布直方圖兩個過程,其理論基礎在參考的文獻里解釋的非常清楚.但是從原始的HE到CLAHE中間經歷了多個優化算法,網上很少有直觀的代碼實現,好不容易在這篇文章里找到.下面的介紹主要是結合代碼,進行部分解釋說明.
直方圖均衡化,HE:
(資料圖片僅供參考)
這個是最基礎版本,代碼表現的很清楚
Mat eaualizeHist_GO(Mat src){ int width = src.cols; int height= src.rows; Mat HT_GO = src.clone(); int tmp[256] ={0}; float C[256] = {0.0}; int total = width*height; for (int i=0 ;i(i,j); tmp[index] ++; } } //計算累積函數 for(int i = 0;i < 256 ; i++){ if(i == 0) C[i] = 1.0f * tmp[i] / total; else C[i] = C[i-1] + 1.0f * tmp[i] / total; } //這里的累積函數分配的方法非常直觀高效 for(int i = 0;i < src.rows;i++){ for(int j = 0;j < src.cols;j++){ int index = src.at(i,j); HT_GO.at(i,j) = C[index] * 255 ; } } return HT_GO;}
自適應直方圖均衡化,AHE:
把整個大圖分成8X8=64份,當然,這里的舉例圖像的長寬正好是8的倍數.寫入到存儲直方圖的數組的順序是按照沒一行的從左到右, 一共八行.
Mat aheGO(Mat src,int _step = 8){ Mat AHE_GO = src.clone(); int block = _step; int width = src.cols; int height = src.rows; int width_block = width/block; //每個小格子的長和寬 int height_block = height/block; //存儲各個直方圖 int tmp2[8*8][256] ={0}; float C2[8*8][256] = {0.0}; //分塊 int total = width_block * height_block; for (int i=0;i<BLOCK;I++){ for="" (int="" j="0;j<block;j++){" int="" index="src.at<uchar" start_x="i*width_block;" width_block;="" start_y="j*height_block;" +="" height_block;="" num="i+block*j;" 遍歷小塊,計算直方圖="" ii="start_x" end_x="start_x" ii++)="" for(int="" jj="start_y" (jj,ii); tmp2[num][index]++; } } //計算累積分布直方圖 for(int k = 0 ; k < 256 ; k++){ if( k == 0) C2[num][k] = 1.0f * tmp2[num][k] / total; else C2[num][k] = C2[num][k-1] + 1.0f * tmp2[num][k] / total; } } } //將統計結果寫入 for (int i=0;i<BLOCK;I++){ for="" (int="" j="0;j<block;j++){" int="" index="src.at<uchar" start_x="i*width_block;" width_block;="" start_y="j*height_block;" +="" height_block;="" num="i+block*j;" 遍歷小塊,計算直方圖="" ii="start_x" end_x="start_x" for(int="" jj="start_y" (jj,ii); //結果直接寫入AHE_GO中去 AHE_GO.at(jj,ii) = C2[num][index] * 255 ; } } } } return AHE_GO;}
限制對比度直方圖均衡化:CLHE.
對比度指的是一副圖片中最亮的白和最暗的黑之間的反差大小=(max-min)/(max+min).對比度增強可以使用線性拉伸的方式,即,直接將(min1,max1)的范圍擴大到(min2,max2).但是對于比較復雜的圖片沒有什么效果.直方圖均衡化,也是一種拉伸對比度的方式.
HE算法在一種情況下,效果不好,如果一個圖片中有大塊的暗區或者亮區的話,效果非常不好。這個的原因,也非常好理解,因為HE其實要求一個圖片中必須有10%的最亮的像素點,必須有10%第二亮的像素點,必須有10%第三亮的像素點……假設有一張純黑的圖片,你想想經過HE處理之后,會出現什么情況?答案就是一部分黑的像素也會被強行搞成白的.來自.
因此單純的直方圖均衡化,AH比較適合一副圖像整體偏暗或者亮.如果局部有個比較亮或者暗的,就會多出很多干擾信息.因此進行對比度限制,可以減弱帶來的不利影響.
主要體現在:
假如左圖為原圖的直方圖,在計算累積函數的時候,先轉換成右圖.這樣可以達到限制對比度的功能.即進行削峰,并將削下來的量均勻的分配給每個色階(或者亮度值).
Mat clheGO(Mat src,int _step = 8){ int width = src.cols; int height= src.rows; Mat CLHE_GO = src.clone(); int tmp[256] ={0}; float C[256] = {0.0}; int total = width*height; for (int i=0 ;i(i,j); tmp[index] ++; } } /限制對比度計算部分,注意這個地方average的計算不一定科學 int average = width * height / 255/64; int LIMIT = 4 * average; int steal = 0; for(int k = 0 ; k < 256 ; k++){ if(tmp[k] > LIMIT){ steal += tmp[k] - LIMIT; tmp[k] = LIMIT; } } int bonus = steal/256; //hand out the steals averagely for(int k = 0 ; k < 256 ; k++){ tmp[k] += bonus; } /// //計算累積函數 for(int i = 0;i < 256 ; i++){ if(i == 0) C[i] = 1.0f * tmp[i] / total; else C[i] = C[i-1] + 1.0f * tmp[i] / total; } //這里的累積函數分配的方法非常直觀高效 for(int i = 0;i < src.rows;i++){ for(int j = 0;j < src.cols;j++){ int index = src.at(i,j); CLHE_GO.at(i,j) = C[index] * 255 ; } } return CLHE_GO;}
CLAHE
將上面的AHE結合就是不帶有插值算法的CLAHE:
Mat claheGoWithoutInterpolation(Mat src, int _step = 8){ Mat CLAHE_GO = src.clone(); int block = _step;//pblock int width = src.cols; int height= src.rows; int width_block = width/block; //每個小格子的長和寬 int height_block = height/block; //存儲各個直方圖 int tmp2[8*8][256] ={0}; float C2[8*8][256] = {0.0}; //分塊 int total = width_block * height_block; for (int i=0;i<BLOCK;I++){ for="" (int="" j="0;j<block;j++){" int="" index="src.at<uchar" start_x="i*width_block;" width_block;="" start_y="j*height_block;" +="" height_block;="" num="i+block*j;" 遍歷小塊,計算直方圖="" ii="start_x" end_x="start_x" for(int="" jj="start_y" (jj,ii); tmp2[num][index]++; } } //裁剪和增加操作,也就是clahe中的cl部分 //這里的參數 對應《Gem》上面 fCliplimit = 4 , uiNrBins = 255 int average = width_block * height_block / 255; int LIMIT = 4 * average; int steal = 0; for(int k = 0 ; k < 256 ; k++){ if(tmp2[num][k] >LIMIT){ steal += tmp2[num][k] - LIMIT; tmp2[num][k] = LIMIT; } } int bonus = steal/256; //hand out the steals averagely for(int k = 0 ; k < 256 ; k++){ tmp2[num][k] += bonus; } //計算累積分布直方圖 for(int k = 0 ; k < 256 ; k++){ if( k == 0) C2[num][k] = 1.0f * tmp2[num][k] / total; else C2[num][k] = C2[num][k-1] + 1.0f * tmp2[num][k] / total; } } } //計算變換后的像素值 //將統計結果寫入 for (int i=0;i<BLOCK;I++){ for="" (int="" j="0;j<block;j++){" int="" index="src.at<uchar" start_x="i*width_block;" width_block;="" start_y="j*height_block;" +="" height_block;="" num="i+block*j;" 遍歷小塊,計算直方圖="" ii="start_x" end_x="start_x" for(int="" jj="start_y" (jj,ii); //結果直接寫入AHE_GO中去 CLAHE_GO.at(jj,ii) = C2[num][index] * 255 ; } } } } return CLAHE_GO;}
這樣的結果會有嚴重的網格感覺,需要使用插值的方式進行解決:
Mat claheGO(Mat src,int _step = 8){ Mat CLAHE_GO = src.clone(); int block = _step;//pblock int width = src.cols; int height= src.rows; int width_block = width/block; //每個小格子的長和寬 int height_block = height/block; //存儲各個直方圖 int tmp2[8*8][256] ={0}; float C2[8*8][256] = {0.0}; //分塊 int total = width_block * height_block; for (int i=0;i<BLOCK;I++) for="" (int="" j="0;j<block;j++)" int="" index="src.at<uchar" start_x="i*width_block;" width_block;="" start_y="j*height_block;" +="" height_block;="" num="i+block*j;" 遍歷小塊,計算直方圖="" ii="start_x" end_x="start_x" ii++)="" for(int="" jj="start_y" (jj,ii); tmp2[num][index]++; } } //裁剪和增加操作,也就是clahe中的cl部分 //這里的參數 對應《Gem》上面 fCliplimit = 4 , uiNrBins = 255 int average = width_block * height_block / 255; //關于參數如何選擇,需要進行討論。不同的結果進行討論 //關于全局的時候,這里的這個cl如何算,需要進行討論 int LIMIT = 40 * average; int steal = 0; for(int k = 0 ; k < 256 ; k++) { if(tmp2[num][k] > LIMIT){ steal += tmp2[num][k] - LIMIT; tmp2[num][k] = LIMIT; } } int bonus = steal/256; //hand out the steals averagely for(int k = 0 ; k < 256 ; k++) { tmp2[num][k] += bonus; } //計算累積分布直方圖 for(int k = 0 ; k < 256 ; k++) { if( k == 0) C2[num][k] = 1.0f * tmp2[num][k] / total; else C2[num][k] = C2[num][k-1] + 1.0f * tmp2[num][k] / total; } } } //計算變換后的像素值 //根據像素點的位置,選擇不同的計算方法 for(int i = 0 ; i < width; i++) { for(int j = 0 ; j < height; j++) { //four coners if(i <= width_block/2 && j < = height_block/2) { int num = 0; CLAHE_GO.at(j,i) = (int)(C2[num][CLAHE_GO.at(j,i)] * 255); }else if(i <= 2="" j="">= ((block-1)*height_block + height_block/2)){ int num = block*(block-1); CLAHE_GO.at(j,i) = (int)(C2[num][CLAHE_GO.at(j,i)] * 255); }else if(i >= ((block-1)*width_block+width_block/2) && j <= int="" num="block-1;" else="" i="">= ((block-1)*width_block+width_block/2) && j >= ((block-1)*height_block + height_block/2)){ int num = block*block-1; CLAHE_GO.at(j,i) = (int)(C2[num][CLAHE_GO.at(j,i)] * 255); } //four edges except coners else if( i <= 2="" int="" num_i="0;" num_j="(j" -="" num1="num_j*block" num2="num1" float="" p="(j" q="1-p;" else="" i="">= ((block-1)*width_block+width_block/2)){ //線性插值 int num_i = block-1; int num_j = (j - height_block/2)/height_block; int num1 = num_j*block + num_i; int num2 = num1 + block; float p = (j - (num_j*height_block+height_block/2))/(1.0f*height_block); float q = 1-p; CLAHE_GO.at(j,i) = (int)((q*C2[num1][CLAHE_GO.at(j,i)]+ p*C2[num2][CLAHE_GO.at(j,i)])* 255); }else if( j <= 2="" int="" num_i="(i" -="" num_j="0;" num1="num_j*block" num2="num1" float="" p="(i" q="1-p;" else="" j="">= ((block-1)*height_block + height_block/2) ){ //線性插值 int num_i = (i - width_block/2)/width_block; int num_j = block-1; int num1 = num_j*block + num_i; int num2 = num1 + 1; float p = (i - (num_i*width_block+width_block/2))/(1.0f*width_block); float q = 1-p; CLAHE_GO.at(j,i) = (int)((q*C2[num1][CLAHE_GO.at(j,i)]+ p*C2[num2][CLAHE_GO.at(j,i)])* 255); } //雙線性插值 else{ int num_i = (i - width_block/2)/width_block; int num_j = (j - height_block/2)/height_block; int num1 = num_j*block + num_i; int num2 = num1 + 1; int num3 = num1 + block; int num4 = num2 + block; float u = (i - (num_i*width_block+width_block/2))/(1.0f*width_block); float v = (j - (num_j*height_block+height_block/2))/(1.0f*height_block); CLAHE_GO.at(j,i) = (int)((u*v*C2[num4][CLAHE_GO.at(j,i)] + (1-v)*(1-u)*C2[num1][CLAHE_GO.at(j,i)] + u*(1-v)*C2[num2][CLAHE_GO.at(j,i)] + v*(1-u)*C2[num3][CLAHE_GO.at(j,i)]) * 255); } //最后這步,類似高斯平滑 CLAHE_GO.at(j,i) = CLAHE_GO.at(j,i) + (CLAHE_GO.at(j,i) << 8) + (CLAHE_GO.at(j,i) << 16); } } return CLAHE_GO;}
插值的方式就是根據一個點周圍四個點的值來確定.只是說其值為累積分布直方圖的值.分成64個塊.每個塊又分成四個小塊.整個圖像的四個頂點所在的小塊不用插值.除此之外的四個邊采用"單"線性插值.剩下的為雙線性插值.因此可以簡單的理解為,只有相鄰的小塊才會進行插值.
整體來講上面遺留了兩個問題:
int average = width_block * height_block / 255; int LIMIT = 40 * average; int steal = 0;
1、在進行CLAHE中CL的計算,也就是限制對比度的計算的時候,參數的選擇缺乏依據。在原始的《GEMS》中提供的參數中, fCliplimit = 4 , uiNrBins = 255.但是在OpenCV的默認參數中,這里是40.就本例而言,如果從結果上反推,我看10比較好。這里參數的選擇缺乏依據;
2、CLHE是可以用來進行全局直方圖增強的,那么這個時候,這個average 如何計算,肯定不是width * height/255,這樣就太大了,算出來的LIMIT根本沒有辦法獲得。
優化
該博主的圖像處理系列很值得細細品味。這里也結合他對直方圖均衡化系列的文章,提取出比較新穎的觀點進行總結。
一:三通道聯合處理:
for (Y = 0; Y < Height; Y++){ Pointer = Scan0 + Y * Stride; // 定位到每個掃描行的第一個像素,以避免溶于數據的影響 for (X = 0; X < Width; X++){ HistGram[*Pointer]++; // Blue HistGram[*(Pointer + 1)]++; // Green HistGram[*(Pointer + 2)]++; // Red Pointer += 3; // 移向下一個像素 } } Num = 0; for (Y = 0; Y < 256; Y++){ Num = Num + HistGram[Y]; Lut[Y] = (byte)((float)Num / (Width * Height * 3) * 255); // 計算映射表 } for (Y = 0; Y < Height; Y++){ Pointer = Scan0 + Y * Stride; for (X = 0; X < Width * 3; X += 3){ Pointer[X] = Lut[Pointer[X]]; Pointer[X + 1] = Lut[Pointer[X + 1]]; Pointer[X + 2] = Lut[Pointer[X + 2]]; } }
二:強化的基于局部直方圖裁剪均衡化的對比度調節算法
比如說該篇中除了提到了局部直方圖和全局直方圖以及亮度分量的融合方法,也對累積分布直方圖中(局部均衡化后映射表)的平滑思想做了介紹:
第一種思想就是,將色階(bins,比如256)均勻分成K(比如說是32)份,每份的開始的值和索引(原始像素值)構成二維序列點。這樣根據這K個點可以擬合出一條平滑曲線。這個曲線插值成離散的后即可成為新的映射表。這樣的累積分布直方圖就會更加的平滑。
第二種思想就是,將映射表(累計分布直方圖)中的值,進行一維的均值或者高斯濾波,同樣也可以達到平滑的作用。
三:自動色階
這篇是基于自動色階的算法來實現的圖像增強,首先,自動色階是另外一種裁剪直方圖的方式,通過設置lowcut和highcut兩個參數來確定裁剪直方圖兩頭的程度,裁剪的兩端設置為極端值(比如說0或者1),中間的在重新映射到0-1(0-255)的范圍,使像素值進行拉伸(可以線性,即拉伸時的系數為1,也可以gamma曲線的方式),從而達到對比度增強的效果。
# 裁剪PixelAmount = Width * Height "所有像素的數目 Sum = 0 For Y = 0 To 255 Sum = Sum + HistBlue(Y) If Sum >= PixelAmount * LowCut * 0.01 Then "注意PS界面里的那個百分號 MinBlue = Y "得到藍色分量的下限 Exit For "退出循環 End If Next Sum = 0 For Y = 255 To 0 Step -1 Sum = Sum + HistBlue(Y) If Sum >= PixelAmount * HighCut * 0.01 Then "注意PS界面里的那個百分號 MaxBlue = Y "得到藍色分量的上限 Exit For "退出循環 End If Next# 映射 For Y = 0 To 255 If Y <= 0="" minblue="" then="" elseif="" y="">= MaxBlue Then BlueMap(Y) = 255 Else BlueMap(Y) = (Y - MinBlue) / (MaxBlue - MinBlue) * 255 "線性映射 End If Next
自動對比度與自動色階稍有不同的地方是自動色階各通道(對于多通道,如果是灰度圖這種單通道,兩者算法一樣),動對比度算法首先獲取三個通道下限值的最小值,以及上限值的最大值,然后以此為新的上下限,計算映射表。
上面提到,在拉伸過程中,也可以使用gamma矯正的方式,即在這里:
((Y - Min) / (Max - Min)) * 255
線性拉伸為1,gamma的方式可以為:
pow((float)(Y - Min) / (Max - Min), Gamma) * 255
gamma的值可以根據如下求得:
float Avg = 0, Mean = 0, Sum = 0; for (int Y = 0; Y < 256; Y++) { Sum += Histgram[Y]; Avg += Y * Histgram[Y]; } Mean = Avg / Sum; float Gamma = log(0.5f) / log((float)(Mean - Min) / (Max - Min)); if (Gamma < 0.1f) Gamma = 0.1f; else if (Gamma > 10) Gamma = 10;
局部自適應自動色階除了上面介紹的自動色階方法還結合了CLAHE,當然這里的自適應限制對比度直方圖均衡話中的限制就不需要了,因為限制也是一種裁剪方式。在計算最后的裁剪位置后,還可以通過設置一個參數來進行調整對比度的程度。
void MakeMapping(int* Histgram,float CutLimit=0.01,float Contrast = 1){ int I, Sum = 0, Amount = 0; const int Level = 256; for (I = 0; I < Level; I++) Amount += Histgram[I]; int MinB =0 ,MaxB=255; int Min = 0,Max=255; for (I = 0; I < Level; I++){ if (Histgram[I]!=0){ Min = I ; break;} } for(I = Level-1; I >= 0; I--){ if (Histgram[I]!=0){ Max = I ; break;} } for (I = 0; I < Level; I++){ Sum = Sum + Histgram[I]; if (Sum >= Amount * CutLimit){ MinB = I; break;} } Sum = 0; for(I = Level-1; I >= 0; I--){ Sum = Sum +Histgram[I]; if (Sum >= Amount * CutLimit ){ MaxB = I ; break;} } int Delta = (Max - Min) * Contrast * 0.5 ; Min = Min - Delta; Max = Max + Delta ; if (Min < 0) Min = 0; if (Max > 255) Max = 255; if (MaxB!=MinB){ for (I = 0; I < Level; I++){ if (IMaxB) Histgram[I]=Max; else Histgram[I] = (Max-Min)* (I - MinB) / (MaxB - MinB) + Min ; } } else{ for (I = 0; I < Level; I++) Histgram[I]=MaxB; // 必須有,不然會有一些圖像平坦的部位效果出錯 }}
圖像增強
整理上面提到博主的一些其他圖像增強的方法。
這里提到的增強平時常用的一種銳化方法,過程即是將圖像分為高低頻,然后高頻部分的乘以一個大于1的系數。這樣得到的原圖的邊緣部分就會放大,達到了銳化或對比度增強的效果。
系數的選擇可以使用動態的方法,這樣可以避免某些地方過大的銳化造成的震鈴現象。D可以使用全局平均值或者全局均方差。
這里提到的是(多尺度視網膜增強算法)MSRCR的色彩增強算法。主要是根據下面的公式來:
Log[R(x,y)] = Log[I(x,y)]-Log[L(x,y)]
I是原始圖像,R是增強后的圖像,L為原圖經過高斯或者均值模糊后的圖片。后面提到的尺度也就是模糊核的半徑。
通過上式反推出R,即增強后的圖像。文章中提到的量化算法比較新穎。本來求解中涉及到的log函數需要通過exp才能的出R,但是可以通過求解log[R(x,y)](value)的最大(max)最?。╩in)值后,線性方法的方式得到量化結果。不知道為什么這樣做,難道只是為了提速?
R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)
所謂的多尺度就是進行多個尺度的模糊,然后進行權重求和。
Log[R(x,y)] = Log[R(x,y)] + Weight(i)* ( Log[Ii(x,y)]-Log[Li(x,y)])
其中Weight(i)表示每個尺度對應的權重,要求各尺度權重之和必須為1,經典的取值為等權重。
但是,SSR(單尺度)和MSR(多尺度)在最大尺度相同的時候效果誰好誰壞不太好說。
這種方式會導致色差,解決的方式一般可以通過一下過程:
(1)分別計算出 Log[R(x,y)]中R/G/B各通道數據的均值Mean和均方差Var(注意是均方差)。 (2)利用類似下述公式計算各通道的Min和Max值。 Min = Mean - Dynamic * Var; Max = Mean + Dynamic * Var; (3) 對Log[R(x,y)]的每一個值Value,進行線性映射: R(x,y) = ( Value - Min ) / (Max - Min) * (255-0) ,同時要注意增加一個溢出判斷,即: if (R(x,y) > 255) R(x,y) =255; else if (R(x,y) < 0) R(x,y)=0;
Dynamic取值越小,圖像的對比度月想,一般為2-3能取得比較好的效果。
這里是一種gamma矯正的方式進習慣你對比度增強的算法。主要是進行一個動態的gamma值。使得小于128的像素使用gamma值為0-1的范圍,從而使原來的元素值變大。反之,亦然。并且距離中心128越遠,gamma值的變化會越劇烈。
其中,BFmask是雙邊濾波或者均值濾波模糊后的圖像。 α一般取2。也可以動態矯正,比如說,對于低對比度的圖像,應該需要較強烈的校正,因此α值應該偏大,而對于有較好對比度的圖,α值應該偏向于1,從而產生很少的校正量。
對于三種通道RGB的的處理方式,除了三通道分別處理外,也可以使用如下方式:
一:原圖轉換到YUV或者HSV這中帶亮度的顏色空間中,然后用新得到的luminance值代替Y通道或V通道,然后在轉換會RGB空間
二:新的luminance值和原始luminance值的比值作為三通到的增強系數,這樣三通道可以得到同樣程度的增強。
三:可以根據該公式:
第一種方法容易出現結果圖色彩偏淡,第二種每個分量易出現過飽和,第三種可能要稍微好一點,建議使用第三種。
標簽:
相關推薦:
精彩放送:
- []鋒龍股份:公司首發募集資金和可轉債募集資金投資項目正按項目計劃在緊鑼密鼓地建設和籌備工作中
- []科恒股份:公司的主營業務為鋰電智能裝備及鋰離子正極材料,沒有涉足下游電芯制造
- []世界速看:普洛斯倉儲物流封閉式基礎設施公募REITs狀態更新為“已反饋”
- []世界熱文:ST愛迪爾:公司負債及現金流情況詳見公司最新定期報告
- []【熱聞】雅居樂集團與農行廣東分行簽約 后者在同等條件下優先為雅居樂提供必要綜合融資服務
- []廣州知識城攜北京華瑞錦泰以3.07億元競得廣州黃埔區一宗商地
- []駿成科技:此輪疫情對公司的生產以及業績影響不大,從公司公布的三季報數據可見
- []成人補鈣吃什么鈣片好?金丐醋酸鈣科學補鈣更輕松
- []環球今亮點!深圳峰匯創投發展擬轉讓長興中建投38.5%股權 底價1.62億元
- []重慶輪船集團掛牌宜賓天港物流40%股權及債權 轉讓底價為199萬元
- []僑銀股份新增投資霸州僑銀環保科技 持股比例100%
- []華發股份:公司已披露定增預案,具體內容詳見公司于12月6日上海證券交易所網站披露的公告
- []一起教育科技發布2022年三季度財報:業績穩中向好,連續四個季度實現盈利
- []全球觀天下!安徽滁州超29億元成交九宗地塊 總出讓面積848畝
- []長春3.86億元掛牌5宗地 總出讓面積37.28萬平米
- []當前快訊:珍寶島:公司的參股公司安徽九洲方圓制藥有限公司有飲片業務,據了解,目前業務規模營收億元左右
- []全球快消息!海航科技與天津信托和解
- []當前速訊:賣地發工資的邏輯
- []全球視訊!“三支箭”出弓地產度過“最難時光”?43只地產債大幅反彈近一月漲幅翻倍
- []互聯網巨頭也要跨界儲能?
- []當前消息!1000000000元!環保龍頭成立電池儲能公司
- []機會?蔚藍鋰芯電池生產線改造投產
- []全球時訊:3分鐘!電池儲能安全問題解決了?
- []什么是分布式儲能?分布式儲能系統有哪些功能?
- []環球報道:自費社保一年需交多少 社保自費一年得交多少錢
- []微資訊!從上海離職了怎么把公積金取出來,可分為三個步驟
- []天天滾動:青竹畫材科創板IPO進程終止:原計劃募資4億元,劉其通為控股股東
- []【全球新視野】中國電氣裝備集團12.84億元上海靜安拿地 將建總部大樓
- []當前報道:德國股市收低;截至收盤DAX 30下跌0.57%
- []每日消息!保險公司的分類
- []養老保險能退嗎
- []天天熱點!公積金綁定哪個銀行卡 公積金綁定的是哪個銀行卡
- []央行營業管理部:加大對房地產企業和建筑企業的貸款投放力度
- []環球快消息!一筆關聯交易 建發國際“低價”購入上海閔行兩宗地
- []朗進科技:公司未參與沙特的“The Line”未來城市項目
- []簡訊:中梁控股1月至11月合約銷售額620億元 銷售面積594萬平
- []朗進科技:12月6日公司高管張進、張永利減持公司股份合計1.2萬股
- []環球新消息丨數碼視訊:12月6日公司高管鄭海濤減持公司股份合計8萬股
- []世界今日訊!科華數據:12月6日公司高管林清民增持公司股份合計7300股
- []當前焦點!美瑞新材:12月6日公司高管任光雷減持公司股份合計10萬股
- []每日看點!容知日新5名股東合計減持201.64萬股 套現2.23億 2022年前三季度公司凈利4470.9萬
- []每日熱文:德信中國1-11月合約銷售金額約336億元
- []信息:海航投資將延期至12月21日前回復深交所半年報問詢函
- []【世界新視野】福州1-9月累計住房公積金提取72億 為23風險樓盤放款4.23億
- []【環球時快訊】光大地產至11月底接近4000套房屋全部提前交付
- []宣泰醫藥提示風險 熊去氧膽酸膠囊產品不涉及新冠病毒防治
- []世界短訊!道通科技:12月2日詹金勇減持公司股份合計8750股
- []今日聚焦!珀萊雅:12月6日公司高管方玉友減持公司股份合計24萬股
- []今日報丨ST宏達實控人被證監會擬罰1000萬元 律師明確可索賠區間
- []遠洋集團11月協議銷售額108.6億 前11月累計銷售895億元
- []財面兒|金地商置與金地集團續訂兩個服務協議 自明年1月1日起生效
- []快看點丨財面兒丨中國金茂1-11月累計取得簽約銷售金額共1374.8億元
- []每日頭條!粵水電:公司本次重組已取得中國證監會的核準批復,相關工作正在進行當中
- []每日動態!上坤地產:2022年前11個月合約銷售額約79.2億元
- []全球熱訊:財面兒|金地“21金地MTN007”將于12月15日償付利息6060萬元
- []旭輝控股集團前11月合同銷售1175.9億元
- []天天消息!二手房周報 | 15城成交再降8%,京蓉等皆不及年內周均(11.28-12.4)
- []韋爾股份:公司會一如既往的努力加強經營管理,努力做好經營,提升公司競爭力,實現穩定的業績增長回饋股東
- []今日播報!宜昌城發地產底價29.6億競得宜昌市伍家崗4宗地塊
- []香港11月底官方外匯儲備資產增加60億美元
- []全球微資訊!中天金融:公司逾期債務對應的擔保余額15.1億元
- []新華都:北京重力久致科技有限公司將在經營范圍內開展工作
- []武商集團:公司目前僅在南昌有酒店項目
- []天天熱消息:江蘇無錫支持“外擺位” 打造“夜市經濟”
- []快看:印度股市年均回報率接近20%,IT、材料、工業等行業回報率高
- []國際航協:全球航空業今年虧損收窄,明年將回歸盈利
- []頭條:龍光集團境內債整體展期獲得通過 累計展期規模超223億元
- []環球今頭條!上海中海物業因未履行二次供水水質檢測等被處罰6000元
- []環球焦點!沃森生物:公司在研新冠疫苗項目均在努力推進上市進程,公司將根據臨床進度和數據情況開展上市申報
- []全球快訊:英飛拓:公司暫未開展與卡塔爾世界杯足球賽相關業務
- []天天快資訊丨上坤地產:前11月合約銷售金額約為79.2億元
- []訊息:世茂股份:1-11月銷售簽約金額約86億,銷售簽約面積約66萬平方米
- []環球速看:2023年樓市怎么走,房價漲不漲?最早一份機構預測出爐
- []環球觀速訊丨九豐能源:目前,公司境外主要貨源地在馬來西亞、印度尼西亞、澳大利亞、卡塔爾等地,氣源供應優質、穩定
- []天天訊息:天虹股份:可以通過天虹APP及天虹小程序購買天優醬酒
- []環球微頭條丨風能相關上市公司有哪些?風能上市公司龍頭有哪些?
- []鹽上市公司有哪些?相關上市公司龍頭一覽?
- []全球熱門:安防概念股票有哪些?安防概念股龍頭有哪些?
- []【環球新要聞】2021年地熱概念股有哪些?相關地熱概念股一覽?
- []騰訊上市公司股票有哪些?相關騰訊上市公司有哪些?
- []龍光成第二家境內債整體展期房企 展期規模約220億元
- []2021年超導概念股有哪些?超導概念龍頭股一覽?
- []全球視訊!安科生物股票今天多少錢一股?安科生物股票代碼是多少?
- []訊息:2021年銅龍頭概念股有哪些?銅概念股一覽?
- []化纖行業板塊上市公司有哪些?2021年化纖行業板塊股票一覽?
- []環球播報:雄安股票有哪些?相關雄安概念股票有哪些?
- []2021年新冠核酸上市公司龍頭股票有哪些?2021年新冠核酸概念股有哪些?
- []2021年農林牧漁板塊龍頭股有哪些?股票代碼是多少?
- []環球關注:萬里揚: 公司在浙江省的獨立儲能電站項目都在正常推進中
- []人民幣貶值受益股有哪些?人民幣貶值板塊股票2020一覽?
- []【全球新要聞】煤炭股票有哪些?煤炭概念股一覽?
- []哪些是智能手表概念股?智能手表概念股名單一覽?
- []高新興股票價格是多少?高新興公司經營范圍有哪些?
- []焦點熱訊:橡膠V帶概念股票有哪些?橡膠V帶概念股一覽?
- []微動態丨石墨烯上市公司股票有哪些?石墨烯上市公司龍頭一覽?
- []【天天報資訊】OLED概念股有哪些?相關OLED概念股一覽?
- []【熱聞】永太科技:公司以含氟技術為核心,在氟苯精細化學品領域發展多年,產品種類繁多
- []水泥概念龍頭股有哪些?水泥概念股有哪些?
- []環球熱消息:中國鐵建擬發行22億元中期票據用于償還到期債務
- []世界聚焦:ST宏達:公司目前尚未達到撤銷其他風險警示的條件,相關事項請關注公司后續披露
- 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% 關鍵財務指標好轉營收賬款持續下降
- 國際金價下方支撐仍看向1758美元
- 天天看熱訊:美原油交易策略:供給過剩擔憂升溫,油價或劍指70關口
- 天天資訊:數據 | 我國國際航線旅客量創疫情3年新高,但航班量相比全球仍處較低水平
- 世界快資訊:現貨黃金交易策略:逢低買盤支撐金價,但下行壓力依然較大
- 天天觀點:內部收益率54.56% 聯泓新科碳酸酯鋰電材料項目將于月底前中交
- 全球通訊!華富儲能股東江蘇華富股份被司法凍結 占公司總股本11.96%
- 今日訊!一張圖:交易品種樞紐點+多空占比一覽(2022/12/07周三)
- 今日精選:里程碑丨熱烈慶祝阿詩特能源第十萬臺戶用儲能電池模組下線!
- 【世界快播報】南瑞繼保助力國家電投西藏5站光伏增配儲能保供任務
- 當前觀察:元旦假期公布,旅游平臺機票、酒店搜索應聲上漲超6倍
- 世界觀速訊丨中國機場數字化轉型的現實難題
- 天天快報!貴州山東杭州等地取消落地檢,熱門景區酒店還查核酸嗎?
- 德銀稱近期金價可能測試1750美元支撐,2023年料相對穩定!
- 每日熱文:各地優化疫情防控措施帶動出游熱,旅游產業鏈全面恢復尚需時間
- 豐原藥業:注射用尿促性素屬于促性腺激素藥物
- 環球快資訊:12月7日如意集團漲停分析:抗菌面料,紡織服裝,防護服概念熱股
- 世界熱訊:12月7日民和股份漲停分析:養雞,大農業概念熱股
- 4700米!融和元儲助力世界海拔最高的儲能電站并網投運
- 每日速讀!境內債整體展期獲得通過,龍光將回歸良性健康發展軌道
- 【當前熱聞】12月7日力合科創漲停分析:新冠病毒防治,醫療器械,碳基材料概念熱股
- 江山經開區發展1.13億元競得衢州江山1宗商住用地
- 實時焦點:安瀾城建3.68億元競得舟山岱山縣1宗商住用地
- 方遠房地產7.62億元競得臺州三門縣1宗商住用地 溢價率12.06%
- 環球關注:首開股份50億元公司債券已獲上交所受理
- 郭廣科院長醫美科普為什么有些隆胸術后會很假?
- 環球精選!12月7日漢王科技漲停分析:基因測序,流感/口罩,醫療信息化概念熱股
- 55%看好杭州樓市!貝殼研究院發布購房者置業信心報告
- 北京煤醫田秋梅:想咨詢“花蕊私密整形”又羞于啟齒?
- 北京嘉佩樂醫院靠譜嗎 正規可靠、保護患者就醫權益
- 三維天地助力動物疫控預警預報系統升級改造
- vollgas花式助力葡萄牙,陪你世界杯熬夜看球
- 摩洛哥首度晉級八強,海信電視見證世界杯黑馬誕生
- ? 1場進3球! 海信電視見證21歲葡萄牙小將一戰成名
- 即時焦點:淺議當下奢華酒店產品和服務
- 全球快資訊丨中信建投期貨12月7日早間交易策略
- 天天熱消息:碧桂園擬配售17.8億股 總籌48.06億港元
- 立方數科:有關股東人數請您屆時參看定期報告有關內容
- 學單詞怕忘記——背詞神器小z口袋單詞卡幫你鞏固記憶
- 北京發布“助企紓困12條”支持開發貸款等存量融資合理展期
- 天天即時看!悅心健康:截止11月30日,公司股東總戶數82,729戶,機構股東609戶
- 環球即時:融創發布最新境內債重組方案 未到期債務展期4年
- 環球新消息丨化妝品板塊反彈!產業鏈有望復蘇,機構預計這些個股明年凈利大增
- 每日看點!綠地控股:擬向不超過35名特定投資者非公開發行股票 募資用于保交樓相關項目
- 今亮點!龍湖發布中期股息以股代息計劃 涉及23億美元債券
- 天天熱資訊!千味央廚:有關公司的戰略規劃,請查閱公司披露的定期報告
- 當前速讀:雪榕生物:《OEM交易基礎合同》為框架性協議,該合同的簽訂不會對公司本年度業績造成重大影響
- 每日簡訊:外匯交易提醒:美元逼近200日均線,看漲信號增加,關注加拿大央行決議
- 全球訊息:融資端困難解決之后 房地產下一個問題應如何化解?
- 今日精選:淄博房屋建設開發擬轉讓淄博齊軒地產100%股權 掛牌價2210萬元
- 每日熱聞!江西贛東路橋建設掛牌轉讓華辰置業30%股權 底價為875萬元
- 漢馬科技:公司指定信息披露媒體為《中國證券報》《上海證券報》及上海證券交易所網站
- 每日頭條!270億龍頭出手 風口賽道現30億并購案
- 焦點!中糧糖業:公司今年甜菜采收狀況穩定
- 上海東浩蘭生國貿集團擬2.17億元轉讓灝震國際物流100%股權
- 全球短訊!皖新文化產業投資掛牌重慶皖新文投置業100%股權 底價僅1元
- 【世界新要聞】航企收錢的門道:創新支付方式
- 12月7日重點數據和大事件前瞻
- 【全球快播報】TD早報 | 海南多地調整跨省政策,三亞機票酒店預訂量激增3倍
- 全球聚焦:怎么可以全部提取公積金,有以下四步
- 養老保險余額在哪里查詢 如何查詢養老保險余額
- 全球滾動:業績快報 | 中海前11月合約物業銷售2567億 綠城合約銷售2630億
- 天天滾動:中裝建設:中國郵政儲蓄銀行深圳分行與公司聯合推進的數字人民幣勞務薪資發放系統上線了公司智鏈平臺
- 【全球新視野】公積金能補繳嗎 可以補交公積金嗎
- 聚焦:怎么查孩子交沒交學平險 如何查詢學平險有沒有買
- 全球看點:辭職了公積金怎么取,去公積金中心提取
- 利空加元!加銀本周將進一步激進加息?專家稱市場對此缺乏信心
- 焦點!【實探】北京有序恢復堂食,火鍋店接到20余桌預訂!理發店也要排長隊……
- 華仁藥業:公司管理團隊的簡歷情況請查閱公司在巨潮資訊網披露的《2021年年度報告》
- 京基智農擬為3家子公司提供合計不超過6.16億元擔保
- 建發國際完成配股 獲得8億港元現金
- 【環球快播報】財面兒丨綠地控股:擬向不超過35名特定投資者非公開發行股票
- 世界微資訊!物業丨新大正:1.28億股限售股將于12月12日解禁上市
- 山東章鼓:12月5日公司高管許春東、王崇璞減持公司股份合計18.38萬股
- 鼎龍股份:12月5日公司高管蘇敏光減持公司股份合計1000股
- 今熱點:財面兒|融信中國前11月合約銷售額567.97億元
- 祥生控股前11月合約銷售額228.75億元
- 熱議:中科信息:12月5日公司高管王曉宇減持公司股份合計16.5萬股
- 財面兒丨保利置業前11月合同銷售額450億元
- 環球簡訊:泰福泵業:12月5日公司高管毛世良減持公司股份合計2.23萬股
- 保隆科技:12月5日公司高管尹術飛減持公司股份合計6000股
- 艾迪精密:12月5日公司高管宋飛增持公司股份合計8.14萬股
- 當前通訊!“第三支箭”發力,房企洗牌加速,中小市值國央企存中期成長機會
- 【環球新要聞】沃森生物:疫苗行業具有高投入、高壁壘、高回報、長周期的特點
- 環球熱門:資本月報 | 房企融資利好政策頻出,近期將迎來一波配股潮(2022年11月)
- 簡訊:奧園集團公開招標:出讓奧園健康29.9%股權
- 政策支持房地產平穩健康發展,金科近期利好頻傳
- 全球觀天下!道通科技3名股東合計減持865.76萬股 套現合計2.96億 2022年前三季度公司凈利1.02億
- 金科股份與中國光大銀行重慶分行簽訂戰略合作協議
- 天天觀察:海南多地調整省外來(返)人員政策,三亞“小院兒”民宿預訂量環比增六成
- 當前信息:貝殼靜默期后回購重啟,12月5日耗資200萬美元
- 頭條焦點:綠地控股:擬向不超過35名特定投資者非公開發行股票
- 廈門市調整島外限購政策
- 環球快消息!大宗商品新一輪“超級周期”引擎大概率來自印度,觸發時點尚難預判
- 天天信息:銳科激光:尊的公司暫不涉及相關事項
- 【全球播資訊】合景泰富11月銷售公告出爐 華南高端市場成長空間足
- 融信中國:今年前11個月總銷售額約為567.97億元
- 世界速看:深康佳A:謝謝你的合作。本公司與晟高能源科技在光伏領域的合作正在推進中
- 天天精選!深城交:如有高管發生變化,公司會依規進行披露
- 世界觀焦點:投行預測歐銀加息幅度大于預期,并上調歐元兌美元預測!
- 看點:“19婁底城投PPN002”召開債券持有人會議 擬變更募集資金用途等