基础版本的基础版本 直方图均衡化系列
我们最终所需要的算法名字是: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)最小(min)值后,线性方法的方式得到量化结果。不知道为什么这样做,难道只是为了提速?
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”召开债券持有人会议 拟变更募集资金用途等