B亮度:亮度是光作用于人眼所引起的明亮程度的感覺,它與被觀察物體的發(fā)光強(qiáng)度有關(guān)。主要表現(xiàn)光的強(qiáng)和弱。
H色調(diào):色調(diào)是當(dāng)人眼看一種或多種波長的光時所產(chǎn)生的色彩感覺,它反映顏色的種類呼胚,是決定顏色的基本特征。
S飽和度:飽和度是指顏色的純度即摻入白光的程度息裸,表示顏色深淺的程度蝇更。
一張圖片,比如身份證呼盆,里面的字本身是黑色的年扩,但是在不同光線,明暗度拍照出來的結(jié)果访圃,圖片會變的各種各樣的顏色值厨幻。簡單的說他們的灰度分布值是不一樣的。有時候一張圖片腿时,某個地方是比較白况脆,有些地方某些地方比較暗;
而要處理一張圖片的二值化批糟,或者找出相對黑格了,然后加黑;變的沒有那么簡單徽鼎;
1盛末、既然想到不同區(qū)域影響比較大弹惦,于是想到做分塊處理;把一張圖片切成N等分悄但;然后再處理棠隐;N=?檐嚣,分塊的結(jié)果助泽,應(yīng)該是到達(dá)均值化的要求。也是說每一塊圖片它的圖片明暗差別不大净嘀;理論上得去尋找均值化的B值报咳,往x方向找均值B侠讯,一但發(fā)現(xiàn)一個點(diǎn)的B值與均值B相差很大挖藏,比如說10,則停止查找厢漩,然后找y的方向膜眠;這樣就切出一塊了;這種的話很可能效率比較低溜嗜;這里提供一種簡單的切塊:切最大的平均正方形宵膨,一個長方形總可以切成多個都是正方形的圖形;
還有一種炸宵,是根據(jù)實(shí)際的場景來切分辟躏;
2、按經(jīng)驗土全;gray<128捎琐,比較黑;但是在已經(jīng)很暗的情況下就效果很差裹匙;在已經(jīng)很亮的情況下效果也比較差瑞凑;
所以先去尋找均值化的gray值;為grayJ概页,grayJ<128籽御;那么從新分布下gray<grayJ, 統(tǒng)計blackCount;blackGray惰匙;
whiteGray技掏;whiteCount;計算出blackJ和whiteJ项鬼;則gray<blackJ 基本上設(shè)置gray=0哑梳;blackJ~grayJ 這里的值,則應(yīng)該根據(jù)B秃臣、S的值涧衙,gray相應(yīng)做處理哪工;按道理應(yīng)該是線性關(guān)系。gray>whiteGray,則基本上為白弧哎;grayJ~whiteGray雁比,則應(yīng)該根據(jù)B、S的值撤嫩,gray相應(yīng)做處理偎捎。
grayJ>128;>198,說明圖片已經(jīng)很白了;這時候很可能黑的個數(shù)沒有幾個序攘;如果調(diào)高了blackJ 這會把本來是白變成黑了茴她;如果blackJ不夠高;則達(dá)不到加黑的效果程奠;于是這時候想把圖片的灰度分布做分析丈牢;字比較黑的應(yīng)該有灰度分布比較集中,而且值比其他的值比較低瞄沙;
3己沛、尋找gray black的灰度分布;
圖片w距境、h (寬高)既有w*h個點(diǎn)申尼;每個點(diǎn)都要一個gray值;如何分布垫桂;按道理值比較集中的為一個組师幕;
這里就需要一個排序算法;于是想到了直方圖诬滩,從這個方向作為切入點(diǎn)霹粥;可以把圖片進(jìn)行二值化操作;
-------------------------------------------------------------------------------------------------------------------
調(diào)整為灰度-調(diào)整色階
調(diào)整亮度(-150最屑詈簟)和對比度(100最大) 這種算法比較靠譜
反相 算法
發(fā)現(xiàn)這幾種比較靠譜還是在于調(diào)整亮度與對比度
調(diào)整亮度:發(fā)現(xiàn)圖片識別率并不高
關(guān)照矯正top-hat效果不好改用MORPH_BLACKHAT
#include #include #include #includeint main(){cv::Mat srcImage = cv::imread("19.jpg");if (!srcImage.data)return 1;cv::Mat srcGray;cv::cvtColor(srcImage, srcGray, CV_RGB2GRAY);// 定義結(jié)構(gòu)元素cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(15, 15));cv::Mat topHatMat, blackHatMat;// 形態(tài)學(xué)Top-Hat 頂帽cv::morphologyEx(srcGray, topHatMat,cv::MORPH_TOPHAT, element);// 形態(tài)學(xué)Top-Hat 黑帽cv::morphologyEx(srcGray, blackHatMat,cv::MORPH_BLACKHAT, element);cv::imshow(" srcGray ", srcGray);cv::imshow(" topHatMat? ", topHatMat);cv::imshow(" blackHatMat ", blackHatMat);cv::waitKey();return 0;}
-------------------------------------------------------------------------------------------------------------------
關(guān)于圖片的二值化:
閾值化(thresholding)可以看作是削波的一個特例蒙挑,我們用下圖說明閾值化的原理。
閾值化的原理
不難看出愚臀,只要令削波中的g1old=g2old就實(shí)現(xiàn)了閾值化忆蚀。閾值就象個門檻,比它大就是白姑裂,比它小就是黑馋袜。經(jīng)過閾值化處理后的圖象變成了黑白二值圖,所以說閾值化是灰度圖轉(zhuǎn)二值圖的一種常用方法(我們以前介紹過圖案化和抖動的方法)舶斧。進(jìn)行閾值化只需給出閾值點(diǎn)g1old即可欣鳖。一般情況下,閾值的選取對程序執(zhí)行結(jié)果有很大的影響茴厉,在本程序中采取的是直方圖求門限泽台,迭代法求最佳閾值的方法什荣,這個方法在數(shù)學(xué)上已被證明當(dāng)圖像像素概率分布逼近正態(tài)分布時是最佳的。閾值化處理后的結(jié)果怀酷,是一幅二值圖像
閾值化處理后的結(jié)果
在這里稻爬,閾值的選取是很重要的,閾值如果過高蜕依,就會產(chǎn)生將圖像主體誤認(rèn)為是背景的情況桅锄;閾值如果過低,則會將背景部分誤認(rèn)為是主體部分样眠。因此友瘤,我們應(yīng)該仔細(xì)選擇閾值,我認(rèn)為閾值不應(yīng)該是一個固定的值檐束,它的值應(yīng)該隨著圖像的不同而不同辫秧。在本程序中,采取了動態(tài)求取閾值的方法厢塘。首先我們先求得被處理圖像的灰度直方圖茶没,根據(jù)直方圖求得最大灰度與最小灰度。我們設(shè)置閾值的初值為最大灰度與最小灰度值之和的一半晚碾。然后求得小于閾值部分灰度的平均值iMean1Gray和大于閾值部分的平均值iMean2Gray,將閾值重新設(shè)為這兩個灰度均值 的一半喂急,如此迭代格嘁,最后求得最佳閾值iThreshold。實(shí)驗結(jié)果證明該閾值是可信的廊移,基本上可以把主體與背景區(qū)分開來糕簿。求閾值的代碼如下: