日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

饱和度调整

發(fā)布時(shí)間:2023/12/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 饱和度调整 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖像飽和度是指色彩的鮮艷程度,它是影響色彩最終效果的重要屬性之一。

飽和度也被稱為圖片色彩純度,即色彩中彩色成分和消色成分的占比,這個(gè)比例決定了色彩的飽和度及鮮艷程度。當(dāng)色彩中彩色成分多時(shí),其色彩就呈現(xiàn)飽和(色覺強(qiáng))。鮮明效果,給人的視覺印象會更強(qiáng)烈;反之,若消色成分多,色彩會顯得暗淡,視覺效果也隨之減弱。(書讀百變其義自現(xiàn))

調(diào)整飽和度的思想:

  • 計(jì)算每個(gè)像素點(diǎn)關(guān)于RGB的最大值、最小值
  • 設(shè)備用值:
  • ?delta為兩值(最大值、最小值)之差/255
  • value為兩值(最大值、最小值)之和/255
  • 把RGB圖像轉(zhuǎn)換成HSL圖像(Hue色彩,Saturability飽和度,Light亮度)
  • Light亮度= value/2,如果Light亮度<0.5,飽和度=delta/value;否則飽和度=delta/(2-value)
  • 最后根據(jù)增量判斷做怎么樣的處理,將轉(zhuǎn)換后的新的TGB值存到新圖片內(nèi)
  • //飽和度:值(-1)<-->(+1)

    //arg1為飽和度的值,正值提升飽和度,負(fù)值降低飽和度

    void MainWindow::on_doubleSpinBox_2_valueChanged(double arg1) {//導(dǎo)入原始圖片Mat m_Mat = imread(m_FileName.toStdString());//通過圖像路徑導(dǎo)入原始文件//定義新的Mat來存放調(diào)節(jié)飽和度后的圖像信息(數(shù)據(jù))Mat temp=Mat::zeros(m_Mat.size(),m_Mat.type()) ;//定義備用變量float minVal,maxVal;//像素點(diǎn)的三基色的最大值,最小值float delta;//(maxVal-minVal)/255.0;float value;//(maxVal+minVal)/255.0;float L,S,alpha;//RGB圖像空間轉(zhuǎn)化為HSL(H色調(diào),S飽和度,L亮度)//開始處理for (int i = 0; i < m_Mat.rows; ++i) {for (int j = 0; j < m_Mat.cols; ++j) {//1.計(jì)算每個(gè)像素點(diǎn)關(guān)于RGB的最大值、最小值uchar b = m_Mat.at<Vec3b>(i,j)[0];uchar g = m_Mat.at<Vec3b>(i,j)[1];uchar r = m_Mat.at<Vec3b>(i,j)[2];maxVal = max3(r,g,b);minVal = min3(r,g,b);if(maxVal == minVal){continue;}//灰點(diǎn)不做處理//2.delta為兩值之差/255,value為兩值之和/255delta = (maxVal-minVal)/255.0;value = (maxVal+minVal)/255.0;//3.把RGB圖像轉(zhuǎn)換成HSL圖像(Hue色彩,Saturability飽和度,Light亮度)//HSL中的L(亮度)值L=value/2;//HSL中的S(飽和度)值if(L<0.5){S = delta/value;}else if(L>=0.5){S=delta/(2-value);}//改變圖像飽和度if(arg1>=0){//提高飽和度if(arg1+S>=1){alpha = S;}else{alpha = 1-arg1;}alpha = 1/alpha-1;temp.at<Vec3b>(i,j)[0]=saturate_cast<uchar>(m_Mat.at<Vec3b>(i,j)[0]+(m_Mat.at<Vec3b>(i,j)[0]-L*255)*alpha);temp.at<Vec3b>(i,j)[1]=saturate_cast<uchar>(m_Mat.at<Vec3b>(i,j)[1]+(m_Mat.at<Vec3b>(i,j)[1]-L*255)*alpha);temp.at<Vec3b>(i,j)[2]=saturate_cast<uchar>(m_Mat.at<Vec3b>(i,j)[2]+(m_Mat.at<Vec3b>(i,j)[2]-L*255)*alpha);}else{//降低飽和度alpha = arg1;temp.at<Vec3b>(i,j)[0]=L*255.0+((m_Mat.at<Vec3b>(i,j)[0])-L*255.0)*(alpha+1);temp.at<Vec3b>(i,j)[1]=L*255.0+((m_Mat.at<Vec3b>(i,j)[1])-L*255.0)*(alpha+1);temp.at<Vec3b>(i,j)[2]=L*255.0+((m_Mat.at<Vec3b>(i,j)[2])-L*255.0)*(alpha+1);}}}//刷新圖像QImage img = cvMat_To_Qimage(temp);img = img.scaled(ui->label_2->geometry().width(),ui->label_2->geometry().height(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation);ui->label_2->setPixmap(QPixmap::fromImage(img)); }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的饱和度调整的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。