一、引言
在前面我們介紹了直方圖均衡可以調整影像的對比度,那么還有沒有其他方式調整對比度呢?答案是肯定的,今天就來招硬核的,
二、對比度調整的硬核方法
這招硬核方法就是參考灰度影像的閾值處理,我們知道灰度影像的閾值處理的基本思想是:
將影像中灰度值大于等于指定閾值的,將其設定為255,小于該值的設定為0,
不過閾值處理得到的是二值圖,用于進行對比度增強必須進行調整,可以改成如下:
將影像中灰度值大于等于指定閾值的,將其灰度值設定為原灰度值+x,小于該值的設定為原灰度值-x,其中x為根據對比度調整需要設定的一個固定值,
三、調整的實作
在用數碼相機等拍攝白紙的情況,得到的影像并不是真正的白紙,而是帶不均勻灰度的淺灰色圖片,這種情況需要進行調整才能得到比較合適的背景和前景,下面以一張白紙照片粘貼文字的圖片作為處理物件,該圖片如下:

下面用OpenCV-Python來實作上述演算法:
import numpy as np
import cv2
from opencvPublic import preparePreviewImg,previewImgList,readImgFile
def adjustImgContrast():
img = readImgFile(r'f:\pic\paper.jpg',True)
bigmask = cv2.compare(img, np.uint8([127]), cv2.CMP_GE)
smallmask = cv2.bitwise_not(bigmask)
x = 90
big = cv2.add(img, x, mask=bigmask)
small = cv2.subtract(img, x, mask=smallmask)
res = cv2.add(big, small)
preparePreviewImg('輸入影像:白紙照片', img, fontSize=38, color=(255, 255, 255))
preparePreviewImg('https://blog.csdn.net/LaoYuanPython', None, fontSize=38, color=(255, 255, 255))
preparePreviewImg('調整對比度照片', res, fontSize=38, color=(255, 0, 0))
previewImgList()
print('\033[31m老猿Python網址:\033[34mhttps://blog.csdn.net/LaoYuanPython\033[0m,同名微信公眾號:\033[34m老猿Python')
上述實作用了compare函式,也可以直接逐個像素處理,
我們來看處理結果:

可以看到處理后的圖片效果比原圖片效果好了很多,當然可以繼續調大x的值得到更好的效果,
以上代碼中,opencvPublic是老猿常用的影像處理自定義方法的公用模塊,本文使用的自定義公用模塊函式preparePreviewImg,previewImgList,readImgFile,cmpMatrix,print2DMatrix,其功能請參考《https://blog.csdn.net/LaoYuanPython/article/details/111351901 OpenCV-Python圖形影像處理:自用的一些工具函式功能及呼叫語法介紹》中的介紹,
四、漂白白紙照片的方法
上面的圖片進行了對比度的調整,但得到的背景并不是理想的白紙,背景色的灰度也不一致,下面提供一種這種圖片處理變成純白背景的更好實作方法,
漂白背景色的代碼:
import cv2
from opencvPublic import preparePreviewImg,previewImgList,readImgFile
def adjustWhitePaperBG():
img = readImgFile(r'f:\pic\paper.jpg', True)
kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
close = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel1)
div = np.float32(img) / (close)
res = np.uint8(cv2.normalize(div, div, 0, 255, cv2.NORM_MINMAX))
preparePreviewImg('輸入影像:白紙照片', img, fontSize=38, color=(255, 255, 255))
preparePreviewImg('https://blog.csdn.net/LaoYuanPython', None, fontSize=38, color=(255, 255, 255))
preparePreviewImg('輸出影像:白紙', res, fontSize=38, color=(255, 0, 0))
previewImgList()
print('\033[31m老猿Python網址:\033[34mhttps://blog.csdn.net/LaoYuanPython\033[0m,同名微信公眾號:\033[34m老猿Python')
adjustWhitePaperBG()
顯示的輸入、輸出影像:

五、小結
本節介紹了一種利用閾值強制調整影像對比度的通用方法以及OpenCV-Python的實作,同時介紹了一個基于帶文字的白紙照片對背景色進行漂白的案例,相關方法可以用于影像的增強,
參考資料
https://stackoverflow.com/questions/10549245/how-can-i-adjust-contrast-in-opencv-in-c
更多影像處理的內容請參考專欄《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》、《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初學者疑難問題集》及《影像處理基礎知識》的介紹,
如對文章內容存在疑問,可在博客評論區留言,或關注博客左邊的:老猿Python 微信公號發訊息咨詢,
寫博不易,敬請支持:
如果閱讀本文于您有所獲,敬請點贊、評論、收藏,謝謝大家的支持!
關于老猿的付費專欄
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt開發圖形界面Python應用》專門介紹基于Python的PyQt圖形界面開發基礎教程,對應文章目錄為《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt開發圖形界面Python應用專欄目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音視頻開發專欄 )詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音視頻開發專欄文章目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初學者疑難問題集》為《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的伴生專欄,是筆者對OpenCV-Python圖形影像處理學習中遇到的一些問題個人感悟的整合,相關資料基本上都是老猿反復研究的成果,有助于OpenCV-Python初學者比較深入地理解OpenCV,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初學者疑難問題集專欄目錄 》
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬蟲入門 》站在一個互聯網前端開發小白的角度介紹爬蟲開發應知應會內容,包括爬蟲入門的基礎知識,以及爬取CSDN文章資訊、博主資訊、給文章點贊、評論等實戰內容,
前兩個專欄都適合有一定Python基礎但無相關知識的小白讀者學習,第三個專欄請大家結合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的學習使用,
對于缺乏Python基礎的同仁,可以通過老猿的免費專欄《https://blog.csdn.net/laoyuanpython/category_9831699.html 專欄:Python基礎教程目錄)從零開始學習Python,
如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄,
老猿Python,跟老猿學Python!
? ? 前往老猿Python博文目錄 https://blog.csdn.net/LaoYuanPython ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316072.html
標籤:AI
上一篇:論文閱讀筆記之手術器械分類的注意約束自適應核選擇網路(SKA-ResNet)(一)
下一篇:?matlab從入門到精通?
