1.1  定义

  统计各个像素值,在整幅图像被出现次数之一个遍布函数。

    统计 1       
统计 2

自身自是仅仅是想念吃天鹅肉,却不慎把团结变成了天鹅。

1.3.2  实例

  一帧灰度值范围是[0,
7],64执行64排列的数字图像,其灰度分布如下表所示,求直方图均衡化之后的灰度分布。

  r(k)  n(k)  P(rk)
 r(0) = 0  790   0.19
 r(1) = 1  1023  0.25
 r(2) = 2  850  0.21
 r(3) = 3  656  0.16
 r(4) = 4  329  0.08
 r(5) = 5  245  0.06
 r(6) = 6  122  0.03
 r(7) = 7  81  0.02

  根据上述公式得,
s(0)=1.33≈1,s(1)=3.08≈3,s(2)≈5,s(3)≈6,s(4)≈6,s(5)≈7,s(6)≈7,s(7)≈7

  因为 r(k) -> s(k),所以 s(0)=1 对应该790单如素值。因为r(3), r(4)
分别指向承诺 s(3), s(4),且 s(3)=s(4)=6,

  故像素值为6的例如素数为 (656+329)个,同理可计算像素值为7的如素数。

 
将不同像素值对应的之比如素数除为MN(图像的像素总数),便拿走均衡化之后的灰度直方图,如下所示:

 统计 3

 

【苏子曰:有雷同栽自卑,是人家没有鄙视你,你协调已率先鄙视自己了。还有平等栽自卑是,分明别人根本不怕没有看你,你也始终是担心人家看不起你,这实在是同样栽自作多情。】

3.1  equalizeHist

void equalizeHist (
   InputArray src,  // 输入图像
   OutputArray dst  // 输出图像
);

  源码:

统计 4统计 5

void cv::equalizeHist( InputArray _src, OutputArray _dst )
{
    CV_Assert( _src.type() == CV_8UC1 );

    if (_src.empty())
        return;

    CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(),
               ocl_equalizeHist(_src, _dst))

    Mat src = _src.getMat();
    _dst.create( src.size(), src.type() );
    Mat dst = _dst.getMat();

    Mutex histogramLockInstance;

    const int hist_sz = EqualizeHistCalcHist_Invoker::HIST_SZ;
    int hist[hist_sz] = {0,};
    int lut[hist_sz];

    EqualizeHistCalcHist_Invoker calcBody(src, hist, &histogramLockInstance);
    EqualizeHistLut_Invoker      lutBody(src, dst, lut);
    cv::Range heightRange(0, src.rows);

    if(EqualizeHistCalcHist_Invoker::isWorthParallel(src))
        parallel_for_(heightRange, calcBody);
    else
        calcBody(heightRange);

    int i = 0;
    while (!hist[i]) ++i;

    int total = (int)src.total();
    if (hist[i] == total)
    {
        dst.setTo(i);
        return;
    }

    float scale = (hist_sz - 1.f)/(total - hist[i]);
    int sum = 0;

    for (lut[i++] = 0; i < hist_sz; ++i)
    {
        sum += hist[i];
        lut[i] = saturate_cast<uchar>(sum * scale);
    }

    if(EqualizeHistLut_Invoker::isWorthParallel(src))
        parallel_for_(heightRange, lutBody);
    else
        lutBody(heightRange);
}

View Code

一个人若是长期在一个窖藏龙卧虎的地方读书、生活或办事,那ta很爱养成一种植思想惯性,即忍不住以好的短和别人的独到之处于;这样,即便ta自己就是是天或者虎被的同等个,ta也会来得缺乏自信心。这种考虑的危害性在于,即便是退出了这个高手如云的环境,面对一个归结素质不苟自己的食指,只要对方以有一个方面比ta强一点点,而立或多或少刚好又是ta比较在意的,ta便会出一致种植“我不如人家”的挫败感。据我的非净统计,在中华,北大毕业的学员跟其他人相比之下自卑感更明了,我的几乎独北大之爱人,他们除“会考试”之外,在许多另地方呢够呛可观,说是素质教育培养出来的全才也未也过,可他们却都沦为于卑的泥坑中。

4.3  直方图于

统计 6统计 7

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

/**
 * @function main
 */
int main( int argc, char** argv )
{
    Mat src_base, hsv_base;
    Mat src_test1, hsv_test1;
    Mat src_test2, hsv_test2;
    Mat hsv_half_down;

    /// Load three images with different environment settings
    if( argc < 4 )
    {
        printf("** Error. Usage: ./compareHist_Demo <image_settings0> <image_setting1> <image_settings2>\n");
        return -1;
    }

    src_base = imread( argv[1], 1 );
    src_test1 = imread( argv[2], 1 );
    src_test2 = imread( argv[3], 1 );

    /// Convert to HSV
    cvtColor( src_base, hsv_base, COLOR_BGR2HSV );
    cvtColor( src_test1, hsv_test1, COLOR_BGR2HSV );
    cvtColor( src_test2, hsv_test2, COLOR_BGR2HSV );

    hsv_half_down = hsv_base( Range( hsv_base.rows/2, hsv_base.rows - 1 ), Range( 0, hsv_base.cols - 1 ) );

    /// Using 50 bins for hue and 60 for saturation
    int h_bins = 50; int s_bins = 60;
    int histSize[] = { h_bins, s_bins };

    // hue varies from 0 to 179, saturation from 0 to 255
    float h_ranges[] = { 0, 180 };
    float s_ranges[] = { 0, 256 };

    const float* ranges[] = { h_ranges, s_ranges };

    // Use the o-th and 1-st channels
    int channels[] = { 0, 1 };


    /// Histograms
    MatND hist_base;
    MatND hist_half_down;
    MatND hist_test1;
    MatND hist_test2;

    /// Calculate the histograms for the HSV images
    calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false );
    normalize( hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat() );

    calcHist( &hsv_half_down, 1, channels, Mat(), hist_half_down, 2, histSize, ranges, true, false );
    normalize( hist_half_down, hist_half_down, 0, 1, NORM_MINMAX, -1, Mat() );

    calcHist( &hsv_test1, 1, channels, Mat(), hist_test1, 2, histSize, ranges, true, false );
    normalize( hist_test1, hist_test1, 0, 1, NORM_MINMAX, -1, Mat() );

    calcHist( &hsv_test2, 1, channels, Mat(), hist_test2, 2, histSize, ranges, true, false );
    normalize( hist_test2, hist_test2, 0, 1, NORM_MINMAX, -1, Mat() );

    /// Apply the histogram comparison methods
    for( int i = 0; i < 4; i++ )
    {
        int compare_method = i;
        double base_base = compareHist( hist_base, hist_base, compare_method );
        double base_half = compareHist( hist_base, hist_half_down, compare_method );
        double base_test1 = compareHist( hist_base, hist_test1, compare_method );
        double base_test2 = compareHist( hist_base, hist_test2, compare_method );

        printf( " Method [%d] Perfect, Base-Half, Base-Test(1), Base-Test(2) : %f, %f, %f, %f \n", i, base_base, base_half , base_test1, base_test2 );
    }

    printf( "Done \n" );

    return 0;
}

View Code

 

其实,“样样都比较旁人强”,远没心理健康来得要。我们以此社会所短的,并无是进取心,而是同粒“甘做二流”的私心。如果无法以健康的前提下上一流,那还是务实一些咔嚓,先跌目标,让祥和有胆量了好同一种植“平凡的人生”。当然,舆论也未不要太势利眼,不要对“二流”进行目标绑架。

1.3.1  定义 

 
直方图均衡化,是将吃得图像的直方图改造成为均匀分布之直方图,从而扩大像素灰度值的动态范围,达到提高图像对比度的法力。

  $\quad s_k = \frac{(L – 1)}{MN} \sum\limits_{j=0}^k n_j \qquad
k = 0, 1, 2, …, L – 1 $

    统计 8       
统计 9

    统计 10       
统计 11

颇时刻,有人说自家内向,我无认,尽管,我并内为是单什么意思都非知底,但自己就是亮,这是个“不好的辞藻”。诚然,我本仍然内向,但马上片种内向,在真相上倒是完全不同:2010年之后的内向,主要是傲、高冷、目中无人,而原先的内向,则全是以自卑。

3.2  calcHist

统计 12统计 13

void cv::calcHist(     
     const Mat *      images,
    int              nimages,
    const int *      channels,
    InputArray      mask,
    OutputArray      hist,
    int              dims,
    const int *      histSize,
    const float **  ranges,
    bool              uniform = true,
    bool              accumulate = false )     

View Code

大抵年来,在触及过各色人等,或者以被各色人等触过以后,我来个顶“惊世骇俗”的意识:在那些自无意间搭理的人数眼里,我是一个弱智的人头、一个值得同情的人;而以自家欣赏的口眼里、在自我崇敬之食指眼里、在本人之底偶像级人物眼里,我倒是一个卓越之人头。因此,鼓起勇气跟牛人相处,更爱克服自卑感。

1  图像直方图

自家自一直自卑,但我的变态的远在当为,我是单势利眼小人,我好攀高枝。越是那些为自身自惭形秽的总人口,我接近ta的希望就是一发明显;因此,从高校及今日,一方面,我同看见那些名列前茅之口就算自卑,另一方面,行为达到,却连“勇敢”地刚在头皮去仿佛,就如此,我的素质呢愈加贴近她们了,自卑感便愈发弱了。到了本,自卑似乎就改为了自己吹牛之资料。

参考资料

  <Digital Image Processing> 3rd

  OpenCV Tutorials / Image Processing (imgproc module) / Histogram
Calculation

 

前说之,是自卑者可以经过“攀高枝”或自我洗脑,变成牛逼的口,但还有同种植异常常见的影像是:有的人,尽管“优秀得使人发指”,却依旧“自卑得千篇一律塌糊涂”。

1.3  直方图均衡化

此前,我爱不释手谦虚的人数,但在直达大学之后,我若要进一步爱那些休谦虚之口了。因为,听那些无客气之丁夸口,更能够吃我备感鼓舞,让自己赢得正能量;尤其是,如果他的吹,能叫自身生“我啊会以及他一样”的信心与斗志,我们就会死爱异、甚至是因客为“精神导师”了。

2  四独参数

  H1 暨 H2 啊片只待比较的直方图。1) 和 2) 的值更充分,二者越匹配;而
3) 和 4) 的值更小,两者越匹配。

1) Correlation

   统计 14

2) Intersection

    统计 15

3) Chi-square

    统计 16

4) Bhattacharyya distance

    统计 17

“越是配无达,越设拿好配给它”,背后的逻辑是,如果生同种“高攀”意识,则实力会向着品味去接近;但如若是同等开始就以自卑感而违背自己之心弦,则结果是,品味和实力都见面回落。

4.2  直方图均衡化

统计 18统计 19

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

int main( int, char** argv )
{
  Mat src, dst;

  const char* source_window = "Source image";
  const char* equalized_window = "Equalized Image";

  // Load image
  src = imread( argv[1], 1 );

  if( src.empty() )
    { cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl;
      return -1;
    }

  // Convert to grayscale
  cvtColor( src, src, COLOR_BGR2GRAY );

  // Apply Histogram Equalization
  equalizeHist( src, dst );

  // Display results
  namedWindow( source_window, WINDOW_AUTOSIZE );
  namedWindow( equalized_window, WINDOW_AUTOSIZE );

  imshow( source_window, src );
  imshow( equalized_window, dst );

  // Wait until user exits the program
  waitKey(0);

  return 0;

}

View Code

这几乎年时看到有些简报,说有由中小城市、尤其是农村出来的子女,到老城市、重点高校以后,很爱遭受自卑感的磨难,甚至是病上抑郁症,但自我自从西北的小村上复旦随后,虽然也常出“我不若人口”的感觉,但整体达标,却连无最好强之挫败感,更不曾生病上抑郁症。为什么呢?因为,我早在高中等级,就早已来矣那么的心得,经历了一如既往庙蝶变,还没上大学之时节,我虽都是地认识跟收受了好之平常,跟自己和了。

4.1  直方图计算

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;

int main( int, char** argv )
{
  Mat src, dst;

  // 1) Load image
  src = imread("left.png");
  if(src.empty()) {
      return -1;
  }

  // 2)  Separate the image in 3 places ( B, G and R )
  std::vector<Mat> bgr_planes;
  split( src, bgr_planes );

  // 3)  Establish the number of bins
  int histSize = 256;

  // 4)  Set the ranges (for B,G,R)
  float range[] = { 0, 256 } ;
  const float* histRange = { range };

  bool uniform = true;
  bool accumulate = false;

  Mat b_hist, g_hist, r_hist;

  // 5)  Compute the histograms
  calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );
  calcHist( &bgr_planes[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate );
  calcHist( &bgr_planes[2], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate );

  // 6) Draw the histograms for B, G and R
  int hist_w = 512;
  int hist_h = 400;
  int bin_w = cvRound( (double) hist_w/histSize );

  Mat histImage( hist_h, hist_w, CV_8UC3, Scalar( 0,0,0) );

  // 7) Normalize the result to [ 0, histImage.rows ]
  normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
  normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
  normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );

  // 8) Draw for each channel
  for( int i = 1; i < histSize; i++ )
  {
      line( histImage, Point( bin_w*(i-1), hist_h - cvRound(b_hist.at<float>(i-1)) ) ,
                       Point( bin_w*(i), hist_h - cvRound(b_hist.at<float>(i)) ),
                       Scalar( 255, 0, 0), 2, 8, 0  );
      line( histImage, Point( bin_w*(i-1), hist_h - cvRound(g_hist.at<float>(i-1)) ) ,
                       Point( bin_w*(i), hist_h - cvRound(g_hist.at<float>(i)) ),
                       Scalar( 0, 255, 0), 2, 8, 0  );
      line( histImage, Point( bin_w*(i-1), hist_h - cvRound(r_hist.at<float>(i-1)) ) ,
                       Point( bin_w*(i), hist_h - cvRound(r_hist.at<float>(i)) ),
                       Scalar( 0, 0, 255), 2, 8, 0  );
  }

  // 9) Display
  imshow("calcHist Demo", histImage );

  waitKey(0);
}

透过不断地类似那些让我自惭形秽的人数,从量变到质变,最后之结果是:我原的偶像、原先无专注过自己的口,也起对自尊重了。

3  OpenCV中之函数

大部早晚,自卑,其实只是“自己吓自己”而就——自卑的思基础是放心不下别人瞧不起自己,可是,如果您真的和那些“别人”、那些很有力的丁、那些你崇拜的总人口去点、与他们交流,你会发觉她们并没瞧不起你——相反,他或是杀欣赏你、很羡慕你、很崇敬你的。再说,大家还挺忙碌,自个儿的自卑都没空应付,哪来之肥力来俯视你吗?不要担心若以人家心里中的影像不好,实际上,别人心里中向不怕从未有过你。别那么辛苦,你从未那么多观众。

3.3  compareHist

统计 20统计 21

double cv::compareHist (     
        InputArray      H1,
        InputArray      H2,
        int                 method
)  

View Code

 

众人爱吹牛,图的凡呀?不就图个“自我感觉良好”嘛?尤其是比如说我这种不自信的人数,吹着吹在,会觉得到温馨还当真是个“人物”,然后,就能“挺起腰做人”了。

4  实例

起一样栽自卑,是别人没有鄙视你,你自己都率先鄙视自己了。还有雷同种植自卑是,分明别人根本不怕从未有过看你,你倒是尽是担心人家看不起你,这实际是一样栽自作多情。

1.2  标准化

  $\quad p_r(r_k) = \frac{n_k}{MN} \qquad k = 0, 1, 2, …, L -1 $

  $r_{k}$ – 第 k 个如素灰度值;  $n_{k}$ – 像素灰度值为
rk 的像素数量;

  MN – 图像中究竟的像素个数;  [0, L-1] – 像素灰度值的限

自我对太太作战的极向是:不思量吃天鹅肉的癞蛤蟆不是好蛤蟆。我宁愿让投机出“高攀不起”的压力感,也无甘于在自己为兴意阑珊的场面下来找个人“凑个数”。

“我平常及他人处时格外自卑,怎么惩罚?”

也就是说,正是以早在达成大学之前就是调动小了期值,这才保证了本人以大学期间尽管明知“我无若人口”,却也从没觉过于的自卑。

立实际上是一个死有共性的问题。你失去管找找十单人口问,这十只人中间,有十独还是自卑的,只不过是,各人的痛点不同而已。

这些概括素质比较大的人口,哪怕自己以诸多方都如比别人高博,但若是以某某方面于他人略差一点,他尽管会见意识距离,进而发生压力感和自卑感呢。原因是,他实在太贪婪了,认为“人家装有的,我还应该具备”。这种“欲壑难填”的秉性,又进一步激化了忧虑和烦躁情绪。

光会欣赏别人吹牛还是不够的,我还得学会自己吹牛。

故跟牛逼的丁处容易增长信心,原因是,总体上,无论是顶尖级出色的老公或极品出色之家里,他们发一个共同点就是是特地会鼓励人,或者,毋宁说是会发觉你身上的长处——你肯定不过发生六区划优点,他们就是能吹成九划分,吹捧得次数多了,你的信心便增长了,并且还会全力以赴地设和谐之实力配得上外的礼赞。(牛人们自然为来傲气,但马上同她们之见面鼓励人口一齐不抵触——一个大学教授会针对别的跟他的社会身份平差不多的授课“不屑一顾”,但却非会见对一个naive的学童不屑一顾;相反,他会见大谦和地鼓励是学生。)

另外,我事先以《复旦对本人极其充分之影响:学会了流产牛——虽然我不帅,但是本人死美妙》一轻柔遭遇提到了,吹牛精神,在合理上,也为自家换得尤其自信。

早以高中的上,我就算开起卑得千篇一律塌糊涂了。小学和初中阶段,“分数压倒一切”,我这种考查机器当就是于各种光环笼罩着。但达到高中,从乡下上都,发现同学等怎么还那么基本上才多艺,而自,连过多极度中心的事物都未知情。我经常暗自思量,我怎么就这样平庸呢?

故而,你不用为祥和之自卑感到过于的忧患,你连无是一个总人口以交火。

自身过去、现在且处自卑状态,并且将来还以继承自卑下去,所以,我能够理解别人的自卑。但自身而为意识,自卑其实没什么不行不了之。自卑,并无吓人。

Talben在哈佛《幸福课》上说,在哈佛,有47%底生患有抑郁症。这个比例,即使再高有,我耶非会见怀疑——从自己对协调的情侣圈子的观赛,抑郁症,就是同样种植“精英病”。为什么那些当某某方面得天独厚得“令人发指”的人经常以起卑得一样塌糊涂,并发生苦于倾向?其实,这是异常轻解释的——

几乎年前,当我同《越是有价的儿媳妇,娶起来越便宜》一缓的女性主角还地处“互相暗恋”阶段的时,有一致龙夜晚,她忽然问我:“你Y是匪是爱慕自己?”我叫立刻突然袭击搞了个措手不及,遂答道:“你这样问,让家怎么好意思回答也?”结果,她说:“你犹豫什么,我好爱而的呀。”我比挫地东山再起了同句子:“我配不达到你呀。”谁知,她转了一致句子:“怎么连你吗这样说!那我怎么不是只要淌孤身了。”我之理解能力还未差,“连你”一歌词之潜台词就是是说:“别人好看她们放无上自我,但若免应这样看。”这眼看是抬高我嘛。然后,我老机智地话锋一转,“我刚刚谈还并未说得了呢。其实,一个口更为受自身看自身放无达它们,我虽一发会怀念将团结配给她”。

反倒,你若是暨于挫的人相处,他们见面不时为您泼冷水,进而为受你怀疑自己是未是真正非常。(卧槽,连这货吧看不起起自家来了?)因为,挫人需要通过吃别人泼冷水来“找到尊严”;当然,也恐怕是姿态水平有限,不识货,没能力发现你的价值而已。

吹牛,是一致种自己欺骗、自我洗脑。吹牛的经过被,我会见为好一个心理暗示、强化协调本来不是那坚定的一些传统或者追求。你以高调中把好的某优点夸大了一点点,适当地鼓吹了协调,或者,是拿一个奇迹表现出的助益当真自己之安澜特质来自自身表扬,当时,你也许是从未有过察觉及立刻一点的;事后,你发现自己“说得极度夸张了”了,然后,就只好被投机向牛皮中之万分自己失去近,这样一来,自己便越发换越帅了。渐渐地,你不怕实在会下放得达协调就漂了之高调了。

前言

是因为在大部分气象下,自卑都是于出来的,那么,是自信或自卑,就同你所处的园地有关了。

连发地冒着叫鄙视的危殆接近各种大牛,我出了一个无限根本之获取是:遇见牛逼的人数,如果仅是多距离要,我们格外爱发生难以克服的自卑感;但是,倘若是贴近距离接触、对话,尤其是,建立起了千篇一律种亲密关系的口舌,此时,即便是他在咱们心里中之牛逼程度并任丝毫衰减,甚至,我们尚新意识了他再多之牛逼的远在,但我们的自卑感却尚未事先那高了,相反,我们的信心空前提升了!与牛逼的人口身临其境距离对话、建立亲密关系,会吃我们看好之逼格提升了一点独水平;并且,这个人越来越牛逼,我们信心百倍的升幅尽管一发怪。当然,这种自信,是外因已转化成为一种内在的力,而非狐假虎威说“我认谁哪个哪个”。