<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          獨(dú)家|OpenCV 1.6 改變圖像的對(duì)比度和亮度!

          共 3995字,需瀏覽 8分鐘

           ·

          2021-08-14 04:42

          翻譯:陳之炎

          校對(duì):吳金迪


          本文約2500字,建議閱讀5分鐘

          本文為大家介紹了OpenCV改變圖像的對(duì)比度和亮度。


          目標(biāo)


          在本教程中, 你將學(xué)習(xí)到以下內(nèi)容:

          • 訪問(wèn)像素值;

          • 用零初始化矩陣;

          • 學(xué)習(xí)CV :: saturate_cast的作用及其有用的原因;

          • 學(xué)習(xí)有關(guān)像素變換的很酷的知識(shí);

          • 提高圖像亮度的實(shí)例。


          理論



          下述解釋援引自理查德·斯?jié)衫够?Richard Szeliski)的<<計(jì)算機(jī)視覺(jué)算法和應(yīng)用>>一書(shū)。 
           

          圖像處理


          • 常用的圖像處理操作是一個(gè)函數(shù),它將一個(gè)或多個(gè)圖像作為輸入并生成輸出圖像。

          • 圖像變可被視為:

          • 點(diǎn)運(yùn)算符(像素變換);

          • 鄰近(基于區(qū)域的)運(yùn)算符。


          像素變換


          • 在圖像處理中, 每個(gè)輸出像素的值僅取決于相應(yīng)的輸入像素值(可能還包括一些全局收集的信息或參數(shù));

          • 此類操作實(shí)例包括亮度調(diào)整、對(duì)比度調(diào)整以及顏色的校正和轉(zhuǎn)換。


          亮度和對(duì)比度調(diào)整


          兩種常用對(duì)比度調(diào)整的方法是將像素值乘以或加上一個(gè)常數(shù):


          • 參數(shù)α > 0和β通常稱為增益參數(shù)和偏置參數(shù),通過(guò)這兩個(gè)參數(shù)分別來(lái)控制對(duì)比度和亮度。

          • F ( X )為源圖像的像素,G ( X )為輸出圖像的像素。可以方便地寫(xiě)出以下表達(dá)式:

          • 其中i和j表示位于第i行,第j列的像素。


          代碼


          C ++  


          (Java 版本請(qǐng)?jiān)L問(wèn):

          https://github.com/opencv/opencv/blob/master/samples/java/tutorial_code/ImgProc/changing_contrast_brightness_image/BasicLinearTransformsDemo.java

          Python 版本請(qǐng)?jiān)L問(wèn):

          https://github.com/opencv/opencv/blob/master/samples/python/tutorial_code/imgProc/changing_contrast_brightness_image/BasicLinearTransforms.py)


          • 原文可下載源代碼(地址在文末)

          • 下面的代碼執(zhí)行g(shù)(i,j)=α?f(i,j)+β操作



          代碼詳解


          C ++  


          使用CV :: imread加載圖像并將其保存到Mat對(duì)象中:
           


          接下來(lái),對(duì)該圖像做一些轉(zhuǎn)換,為此需要?jiǎng)?chuàng)建一個(gè)新的Mat對(duì)象來(lái)存放它。此外,我們希望它具備以下特征:

          • 初始像素值為零;

          • 與原始圖像相同的尺寸和數(shù)據(jù)類型。



          cv::Mat::zeros返回一個(gè)基于image.size()和image.type() 的Matlab格式的零初始化值。

          • 我們現(xiàn)在要求用戶輸入α和β值:

           


          • 為了執(zhí)行g(shù)(i,j)=α?f(i,j)+β操作,我們必須訪問(wèn)圖像的每個(gè)像素。由于是對(duì)BGR圖像進(jìn)行操作,所以每個(gè)像素包含(B,G和R)三個(gè)值,我們必須分別訪問(wèn)它們。具體代碼如下:



          注意(只適用于C ++代碼):

          • 我們利用 image.at<Vec3b>(y,x)[c]來(lái)訪問(wèn)圖像的各個(gè)像素,其中?是行號(hào), X是列號(hào),C是B,G或R(0,1或2);

          • 由于α?p(i,j)+β 操作的值可能溢出或?yàn)榉钦麛?shù)(如α是浮點(diǎn)數(shù)),我們用CV :: saturate_cast來(lái)確保該值的有效性;

          • 最后,我們用以下方式創(chuàng)建窗口并顯示圖像。



          我們利用以下簡(jiǎn)單的命令來(lái)取代for循環(huán)來(lái)訪問(wèn)圖像的每個(gè)像素
           


          cv::Mat::convertTo將執(zhí)行*new_image = a*image + beta*操作.。但是,我們想向你展示如何訪問(wèn)每個(gè)像素。在任何情況下,這兩種方法都給出相同的結(jié)果,但 convertTo 更加優(yōu)化并且工作速度更快。


          結(jié)果


          • 我們不運(yùn)行代碼,設(shè)置α = 2.2和β = 50。




          實(shí)例


          在本小節(jié)中,我們將以前學(xué)到的技巧付諸實(shí)戰(zhàn),通過(guò)調(diào)整圖像的亮度和對(duì)比度來(lái)校正曝光不足的圖片。同時(shí),學(xué)習(xí)利用伽瑪校正(gamma correction)技術(shù)來(lái)校正圖像的亮度。

          圖像亮度和對(duì)比度調(diào)整


          增大(或減小) β值將加大(/減小)各個(gè)像素的對(duì)比度。像素值超出 [0; 255]范圍之外的值將會(huì)飽和(即:大于255,或小于0的像素值將鉗位到255或 0)。
           


          原始圖像的淺灰色直方圖中,深灰色亮度= 80 GIMP

          直方圖表示該色彩像素中每種色彩的數(shù)目。深色圖像的像素值將大于淺色圖像的像素值,因此直方圖的左半部分會(huì)出現(xiàn)一個(gè)峰值。當(dāng)添加一個(gè)恒定的偏差之后,整個(gè)直方圖右移,為所有的像素增加了一個(gè)恒定的偏置。

          修改參數(shù)α將修改水平軸的展幅,如果α <1中,色彩值將被壓縮,其結(jié)果是圖像的對(duì)比度降低。
           


          原圖像的淺灰色直方圖中,深灰色時(shí), 對(duì)比度GIMP <0

          注意,利用對(duì)比度/亮度工具Gimp獲得的上述柱狀圖,亮度工具的偏置參數(shù)β應(yīng)該與之相同,但對(duì)比度工具的增益參數(shù)α是不同的(可以從前面的直方圖中看出)。

          調(diào)整偏置參數(shù)β可以提高亮度,但同時(shí),圖像的對(duì)比度會(huì)下降,圖像上似乎會(huì)蒙上一層輕微的面紗。調(diào)整增益α增益可緩釋這種效果,但是由于出現(xiàn)飽和,圖像將失去原有明亮區(qū)域的一些細(xì)節(jié)。

          伽瑪校正


          伽瑪校正利用輸入值和輸出映射值之間的非線性變換,校正圖像的亮度:

           


          由于這種關(guān)系是非線性的,其效果不會(huì)影響所有的像素,最終輸出將取決于像素的原始值。
           


          打印出不同的伽瑪值(gamma)

          當(dāng)γ <1時(shí),,原始圖像的暗區(qū)將變得更加明亮,整個(gè)直方圖將右移;當(dāng)γ > 1時(shí), 原始圖像的亮區(qū)將變得更暗,整個(gè)直方圖將左移。

          糾正曝光不足的圖像


          我們?cè)O(shè)置α = 1.3和β = 40修正下面的圖像。
           

          圖: Visem的作品 [CC BY-SA 3.0],來(lái)源:維基共享資源


          圖像的整體亮度得到了改善,但可以看出: 由于色彩的像素?cái)?shù)值飽和,圖中云彩已經(jīng)飽和(攝影高光修剪)。

          我們用γ=0.4修正下面的圖像。
           

          圖: Visem的作品 [CC BY-SA 3.0],來(lái)源:維基共享資源

          由于映射是非線性的,伽馬校正添加了少量的飽和效應(yīng),并且不存在前面所述方法的數(shù)值飽問(wèn)題。
           

          左邊:α,β校正后的直方圖;中間:原始圖像的直方圖;右邊:伽馬校正后的直方圖

          上圖比較了三幅圖像(三個(gè)直方圖的y值不相同)的直方圖。從中可以發(fā)現(xiàn),大部分的像素值都在原始圖像直方圖的下部。α , β修正后,由于圖像出現(xiàn)飽和,在255 處可以觀察到一個(gè)峰值,整個(gè)直方圖右移。伽瑪校正后,直方圖右移,圖像暗區(qū)域中的像素移動(dòng)的位移比在明亮區(qū)域像素移動(dòng)的位移更大(見(jiàn)伽瑪曲線圖)。

          在本教程中,描述了兩種調(diào)整圖像對(duì)比度和亮度簡(jiǎn)單的方法。它們只是基本技術(shù),不能用作光柵圖形編輯器的替代品!

          代碼


          C ++  


          教程的源代碼請(qǐng)?jiān)L問(wèn)原文(地址在文末)

          伽馬校正的源代碼Code:
           


          在這里,由于一次只需要計(jì)算256 個(gè)數(shù)值,利用查找表來(lái)提高計(jì)算性能。

          更多資源


          • 圖形渲染中的伽瑪校正

          • CRT監(jiān)視器的伽瑪校正和圖像顯示

          • 數(shù)字曝光技術(shù)


          注:本文以C++語(yǔ)言代碼為例,獲取Java和python版本可在原文中查看:

          https://docs.opencv.org/4.5.2/d3/dc1/tutorial_basic_linear_transform.html

           
          編輯:于騰凱
          校對(duì):林亦霖?

          下一小節(jié):1.7 離散傅里葉變換

           
          往期回顧:
          獨(dú)家|OpenCV?1.1 Mat?- 基本圖像容器(附鏈接)

          獨(dú)家|OpenCV 1.2 如何用OpenCV掃描圖像、查找表和測(cè)量時(shí)間(附鏈接)

          獨(dú)家|OpenCV?1.3 矩陣的掩膜操作(附鏈接)

          獨(dú)家|OpenCV 1.4 對(duì)圖像的操作

          獨(dú)家|OpenCV 1.5 利用OpenCV疊加(混合)兩幅圖像




          譯者簡(jiǎn)介





          陳之炎,北京交通大學(xué)通信與控制工程專業(yè)畢業(yè),獲得工學(xué)碩士學(xué)位,歷任長(zhǎng)城計(jì)算機(jī)軟件與系統(tǒng)公司工程師,大唐微電子公司工程師,現(xiàn)任北京吾譯超群科技有限公司技術(shù)支持。目前從事智能化翻譯教學(xué)系統(tǒng)的運(yùn)營(yíng)和維護(hù),在人工智能深度學(xué)習(xí)和自然語(yǔ)言處理(NLP)方面積累有一定的經(jīng)驗(yàn)。業(yè)余時(shí)間喜愛(ài)翻譯創(chuàng)作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項(xiàng)目、新財(cái)稅主義宣言等等,其中中譯英作品“新財(cái)稅主義宣言”在GLOBAL TIMES正式發(fā)表。能夠利用業(yè)余時(shí)間加入到THU 數(shù)據(jù)派平臺(tái)的翻譯志愿者小組,希望能和大家一起交流分享,共同進(jìn)步

          翻譯組招募信息

          工作內(nèi)容:需要一顆細(xì)致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據(jù)科學(xué)/統(tǒng)計(jì)學(xué)/計(jì)算機(jī)類的留學(xué)生,或在海外從事相關(guān)工作,或?qū)ψ约和庹Z(yǔ)水平有信心的朋友歡迎加入翻譯小組。

          你能得到:定期的翻譯培訓(xùn)提高志愿者的翻譯水平,提高對(duì)于數(shù)據(jù)科學(xué)前沿的認(rèn)知,海外的朋友可以和國(guó)內(nèi)技術(shù)應(yīng)用發(fā)展保持聯(lián)系,THU數(shù)據(jù)派產(chǎn)學(xué)研的背景為志愿者帶來(lái)好的發(fā)展機(jī)遇。

          其他福利:來(lái)自于名企的數(shù)據(jù)科學(xué)工作者,北大清華以及海外等名校學(xué)生他們都將成為你在翻譯小組的伙伴。


          點(diǎn)擊文末“閱讀原文”加入數(shù)據(jù)派團(tuán)隊(duì)~



          轉(zhuǎn)載須知

          如需轉(zhuǎn)載,請(qǐng)?jiān)陂_(kāi)篇顯著位置注明作者和出處(轉(zhuǎn)自:數(shù)據(jù)派ID:DatapiTHU),并在文章結(jié)尾放置數(shù)據(jù)派醒目二維碼。有原創(chuàng)標(biāo)識(shí)文章,請(qǐng)發(fā)送【文章名稱-待授權(quán)公眾號(hào)名稱及ID】至聯(lián)系郵箱,申請(qǐng)白名單授權(quán)并按要求編輯。

          發(fā)布后請(qǐng)將鏈接反饋至聯(lián)系郵箱(見(jiàn)下方)。未經(jīng)許可的轉(zhuǎn)載以及改編者,我們將依法追究其法律責(zé)任。



          點(diǎn)擊“閱讀原文”擁抱組織


          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费在线观看一区 | 91婷婷在线 | 色婷婷香蕉在线一区二区 | 人人做人人爱人人爽 | 欧美日韩1级 |