<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>

          提高計算機視覺任務(wù)的圖像質(zhì)量

          共 6462字,需瀏覽 13分鐘

           ·

          2021-10-26 16:24

          點擊下方AI算法與圖像處理”,一起進步!

          重磅干貨,第一時間送達

          介紹
          當(dāng)我們開始從事任何基于計算機視覺的任務(wù)時,我們所有人都面臨的幾個問題是,要么是缺乏數(shù)據(jù),要么是數(shù)據(jù)質(zhì)量的問題。
          數(shù)據(jù)量較少仍然只有兩種可能的解決方案,一種是嘗試獲取更多數(shù)據(jù)或繼續(xù)使用不同的增強技術(shù),但是當(dāng)我們談?wù)摂?shù)據(jù)質(zhì)量時,數(shù)據(jù)質(zhì)量差異很大,因為在某些限制性的指導(dǎo)原則下,你不會點擊所有的圖像。用戶可以在不同的光照條件、不同的角度和 DPI 下單擊圖像,因此提出一種適用于所有這些的理想圖像增強技術(shù)是一種 NP 難題。
          因此,有一組方法主要用于增強計算機視覺任務(wù)的圖像質(zhì)量,例如對象檢測、圖像分類、OCR 等。我們將通過示例圖像并應(yīng)用各種增強技術(shù)來一一討論它們.
          我們將在本文中討論的技術(shù)如下:
          1. 二值化/閾值化
          2. 降噪
          3. 糾偏
          4. 重新縮放
          5. 形態(tài)學(xué)操作
          6. 為了嘗試這些操作,我們將使用Python3語言及其兩個庫, PillowOpenCV。

          二值化

          此技術(shù)用于將圖像從 RGB 轉(zhuǎn)換為單色(黑白),通常稱為**閾值處理。**該技術(shù)主要用于需要白底黑字的 OCR 任務(wù)。
          OCR 模型在白底黑字的圖像上進行訓(xùn)練,以提高準(zhǔn)確性,因此對圖像進行二值化有助于提高 OCR 模型的質(zhì)量。二值化圖像還有助于節(jié)省空間并加快處理速度,因為與其他多通道圖像格式相比,它只有一個顏色通道。
          OpenCV 庫提供了多種類型的二值化技術(shù)。
          1. 二進制閾值:這是最簡單的一個,我們必須定義一個閾值,低于該閾值,所有像素值都被轉(zhuǎn)換為黑色,其余的像素值會轉(zhuǎn)換為白色,從而得到二值化圖像,你可以使用以下代碼片段來對圖像進行二進制閾值處理。
          ##?import?dependencies
          import?cv2
          from?PIL?import?Image
          import?matplotlib.pyplot?as?plt
          ##?reading?image
          img?=?cv2.imread('text_document.jpg',0)
          ##?apply?binary?thresholding
          ret,thresh1?=?cv2.threshold(img,170,255,cv2.THRESH_BINARY)
          ##?plot?original?and?binarised?image?
          titles?=?['Original?Image',?'Binary?Thresholding']
          images?=?[img,?thresh1]
          for?i?in?range(2):
          ????plt.figure(figsize=(20,20))
          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
          ????plt.title(titles[i])
          ????plt.xticks([]),plt.yticks([])
          上面的代碼將產(chǎn)生以下圖像:
          2. 自適應(yīng)閾值:與二元閾值法不同,該方法根據(jù)像素值的小周圍區(qū)域來確定其閾值。這種方法也有兩種類型:
          • 自適應(yīng)閾值均值:閾值是平均值附近區(qū)域減去固定的?。
          • 自適應(yīng)高斯閾值:閾值是鄰域值減去常數(shù)C的高斯加權(quán)總和。
          該方法主要用于去除圖像中的不同光照條件,因為我們根據(jù)其周圍區(qū)域獲得像素值。
          ##?import?dependencies

          import?cv2

          from?PIL?import?Image

          import?matplotlib.pyplot?as?plt

          ##?reading?image

          img?=?cv2.imread('lighting_conditions.jpg',?0)

          ##?apply?adaptive?thresholding?

          ##?adaptive?mean?thresholding?

          th1?=?cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,

          ????????????cv2.THRESH_BINARY,11,2)

          ##?adaptive?gaussian?thresholding

          th2?=?cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,

          ????????????cv2.THRESH_BINARY,11,2)

          ##?plot?original?and?binarised?image?

          titles?=?['Original?Image',?'Adaptive?Mean?Thresholding',?'Adaptive?Gaussian?Thresholding']

          images?=?[img,?th1,?th2]

          plt.figure(figsize=(20,20))

          for?i?in?range(3):

          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)

          ????plt.title(titles[i])

          ????plt.xticks([]),plt.yticks([])
          上述代碼的輸出如下:
          3. Otsu's Binrisation:該方法不需要任何閾值參數(shù),因為它會自動確定。此方法通過創(chuàng)建所有像素值的直方圖,然后從中計算平均值來確定閾值。
          ##?import?dependencies

          import?cv2

          from?PIL?import?Image

          import?matplotlib.pyplot?as?plt

          ##?reading?image

          img?=?cv2.imread('lighting_conditions.jpg',?0)

          ##?apply?Otru's?thresholding

          ret3,th1?=?cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

          ##?plot?original?and?binarised?image?

          titles?=?["Original?Image",?"Binary?Otsu's?Thresholding"]

          images?=?[img,?th1]

          plt.figure(figsize=(20,20))

          for?i?in?range(2):

          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)

          ????plt.title(titles[i])

          ????plt.xticks([]),plt.yticks([])

          上述代碼的輸出如下:

          降噪

          大多數(shù)計算機視覺任務(wù)失敗的最重要因素是噪聲。噪聲可以是高斯噪聲(由于不同的光照條件而產(chǎn)生)和椒鹽噪聲(稀疏的明暗干擾)。
          有時圖像對人眼看起來更好,但是當(dāng)我們將這些圖像傳遞給任何基于計算機視覺的模型時,例如分類和對象檢測,結(jié)果都不理想,因為我們想要找到的噪聲對象失真,并且可能與模型訓(xùn)練的對象不匹配,因此圖像中的噪聲會降低模型的準(zhǔn)確性。
          OpenCV 提供了一個名為 fastNIMeansDenoising() 的函數(shù),它可以平滑圖像以減少圖像噪聲。
          ##?import?dependencies

          import?cv2

          from?PIL?import?Image

          import?matplotlib.pyplot?as?plt

          ##?reading?image

          img?=?cv2.imread('noisy_image.jpg')

          ##?apply?image?denoising

          dst?=?cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)

          ##?plot?original?and?denoised?image?

          titles?=?["Original?Image",?"Denoised?Image"]

          images?=?[img,?dst]

          plt.figure(figsize=(20,20))

          for?i?in?range(2):

          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)

          ????plt.title(titles[i])

          ????plt.xticks([]),plt.yticks([])

          上面的代碼將產(chǎn)生以下圖像:

          糾偏

          糾偏是從圖像中去除偏斜(角度不同于 0)的過程。這個問題沒有具體的解決方案。你可能會在網(wǎng)絡(luò)上找到多種解決方案,但是當(dāng)你在圖像上嘗試這些解決方案時,這可能對你沒有意義。
          所以我建議你訓(xùn)練你自己的基于計算機視覺的模型,創(chuàng)建一個對多角度圖像進行分類的分類模型是最好的選擇。

          重新縮放

          重新縮放是放大或縮小圖像以改變圖像分辨率的過程。當(dāng)你重新縮放圖像時,該圖像中的不同像素值將被復(fù)制以使其更加像素化,并刪除像素值以使其縮小。
          此方法主要用于圖像分類和對象檢測,因為你需要將圖像重新縮放到模型輸入大小。
          假設(shè)你正在為貓和狗的類型創(chuàng)建 VGG 分類器,你有一些可能大小不同的圖像,因此你無法將這些圖像按原樣傳遞給模型,因為模型需要固定的圖像大小. 在這種情況下,你需要根據(jù)模型的輸入尺寸縮小或放大圖像尺寸。
          重新縮放圖像的簡單方法如下:
          ##?import?dependencies
          import?cv2
          from?PIL?import?Image
          import?numpy?as?np
          import?matplotlib.pyplot?as?plt
          ##?reading?image
          img?=?Image.open('noisy_image.jpg')
          ##?apply?image?rescaling?and?making?image?300x300?(downscaling)
          dst?=?img.resize((50,50))
          ##?plot?original?and?downscaled?image
          titles?=?["Original?Image",?"Rescaled?Image"]
          images?=?[np.asarray(img),?np.asarray(dst)]
          plt.figure(figsize=(20,20))
          for?i?in?range(2):
          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
          ????plt.title(titles[i])
          ????plt.xticks([]),plt.yticks([])
          上面的代碼將產(chǎn)生以下圖像:

          形態(tài)學(xué)操作

          形態(tài)學(xué)操作是一些用于圖像變換的簡單操作形式。對于圖像變換,輸入圖像數(shù)組與決定操作性質(zhì)的核相乘。
          當(dāng)你有一些物體的邊界看不清楚時,你可以使用形態(tài)學(xué)操作來擴大它的邊界,這將有助于輕松找到物體,同樣,如果邊界很大,你可以用同樣的方法縮小它。這些技術(shù)主要用于 ICR,因為它們的文本邊界較小,需要放大以便 ICR 模型識別它們。
          兩種主要的形態(tài)學(xué)操作如下:
          1. 腐蝕:此操作試圖腐蝕圖像的前景,從而使圖像中的白色像素值最小化。腐蝕的程度完全取決于內(nèi)核的大小以及你應(yīng)用該內(nèi)核的迭代次數(shù)。內(nèi)核是一個正方形大小的矩陣,只有 1 和 0 值來生成腐蝕圖像。
          使用 5×5 矩陣應(yīng)用于一次迭代的腐蝕如下所示:
          ##?import?dependencies
          import?cv2
          from?PIL?import?Image
          import?matplotlib.pyplot?as?plt
          ##?reading?image
          img?=?cv2.imread('text_document.jpg',?0)
          ##?apply?erosion
          kernel?=?np.ones((5,5),np.uint8)
          erosion?=?cv2.erode(img,kernel,iterations?=?1)
          ##?plot?original?and?eroded?image
          titles?=?["Original?Image",?"Eroded?Image"]
          images?=?[img,?erosion]
          plt.figure(figsize=(20,20))
          for?i?in?range(2):
          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
          ????plt.title(titles[i])
          ????plt.xticks([]),plt.yticks([])
          結(jié)果圖像如下:
          2.膨脹:這個操作與腐蝕相反,它試圖最大化圖像中的白色區(qū)域。這也取決于內(nèi)核大小和迭代次數(shù)。
          使用 5×5 內(nèi)核大小進行 1 次迭代的膨脹如下所示:
          ##?import?dependencies
          import?cv2
          from?PIL?import?Image
          import?matplotlib.pyplot?as?plt
          ##?reading?image
          img?=?cv2.imread('text_document.jpg',?0)
          ##?apply?dilation
          kernel?=?np.ones((5,5),np.uint8)
          dilation?=?cv2.dilate(img,kernel,iterations?=?1)
          ##?plot?original?and?dilated?image
          titles?=?["Original?Image",?"Dilated?Image"]
          images?=?[img,?dilation]
          plt.figure(figsize=(20,20))
          for?i?in?range(2):
          ????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
          ????plt.title(titles[i])
          ????plt.xticks([]),plt.yticks([])
          這些操作取決于內(nèi)核大小和值,主要用于為 OCR 模型準(zhǔn)備圖像。

          結(jié)論

          這些是一些最重要的技術(shù),你可以使用它們來提高圖像質(zhì)量,從而提高基于計算機視覺的模型的準(zhǔn)確性。沒有選擇算法的正確方法,它完全是基于嘗試最適合你的數(shù)據(jù)的方法。
          有時,選擇可以是單獨的,有時你必須使用這些算法的組合,以使你的數(shù)據(jù)更適合你的算法??傊绻愕膱D像質(zhì)量太差,并且你希望這些算法在這些圖像上工作,你會有些不滿,因為這些技術(shù)可以改善噪聲和雜質(zhì)較少的圖像,但對于非常糟糕的圖像,它可能不起作用。
          現(xiàn)在你可以根據(jù)你的用例繼續(xù)嘗試這些操作。
          努力分享優(yōu)質(zhì)的計算機視覺相關(guān)內(nèi)容,歡迎關(guān)注:

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有美顏、三維視覺、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群


          個人微信(如果沒有備注不拉群!
          請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱



          下載1:何愷明頂會分享


          AI算法與圖像處理」公眾號后臺回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號后臺回復(fù):c++,即可下載。歷經(jīng)十年考驗,最權(quán)威的編程規(guī)范!



          下載3 CVPR2021

          AI算法與圖像處公眾號后臺回復(fù):CVPR,即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文



          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产在线视频一区二区三区 | 一区二区三四区五区视频 | 欧美精品A片在线观看报备 | 99热大香蕉 | 一级黄色成人影片 |