RGB 寻找传说中的black

B亮度:亮度是光作用于人眼所引起的明亮程度的感觉,它与被观察物体的发光强度有关。主要表现光的强和弱。

H色调:色调是当人眼看一种或多种波长的光时所产生的色彩感觉,它反映颜色的种类,是决定颜色的基本特征。

S饱和度:饱和度是指颜色的纯度即掺入白光的程度,表示颜色深浅的程度。


一张图片,比如身份证,里面的字本身是黑色的,但是在不同光线,明暗度拍照出来的结果,图片会变的各种各样的颜色值。简单的说他们的灰度分布值是不一样的。有时候一张图片,某个地方是比较白,有些地方某些地方比较暗;

而要处理一张图片的二值化,或者找出相对黑,然后加黑;变的没有那么简单;

1、既然想到不同区域影响比较大,于是想到做分块处理;把一张图片切成N等分;然后再处理;N=?,分块的结果,应该是到达均值化的要求。也是说每一块图片它的图片明暗差别不大;理论上得去寻找均值化的B值,往x方向找均值B,一但发现一个点的B值与均值B相差很大,比如说10,则停止查找,然后找y的方向;这样就切出一块了;这种的话很可能效率比较低;这里提供一种简单的切块:切最大的平均正方形,一个长方形总可以切成多个都是正方形的图形;

还有一种,是根据实际的场景来切分;

2、按经验;gray<128,比较黑;但是在已经很暗的情况下就效果很差;在已经很亮的情况下效果也比较差;

所以先去寻找均值化的gray值;为grayJ,grayJ<128;那么从新分布下gray<grayJ, 统计blackCount;blackGray;

whiteGray;whiteCount;计算出blackJ和whiteJ;则gray<blackJ 基本上设置gray=0;blackJ~grayJ 这里的值,则应该根据B、S的值,gray相应做处理;按道理应该是线性关系。gray>whiteGray,则基本上为白;grayJ~whiteGray,则应该根据B、S的值,gray相应做处理。

grayJ>128;>198,说明图片已经很白了;这时候很可能黑的个数没有几个;如果调高了blackJ 这会把本来是白变成黑了;如果blackJ不够高;则达不到加黑的效果;于是这时候想把图片的灰度分布做分析;字比较黑的应该有灰度分布比较集中,而且值比其他的值比较低;

3、寻找gray black的灰度分布;

图片w、h (宽高)既有w*h个点;每个点都要一个gray值;如何分布;按道理值比较集中的为一个组;

这里就需要一个排序算法;于是想到了直方图,从这个方向作为切入点;可以把图片进行二值化操作;


-------------------------------------------------------------------------------------------------------------------

调整为灰度-调整色阶

调整亮度(-150最小)和对比度(100最大) 这种算法比较靠谱

反相 算法

发现这几种比较靠谱还是在于调整亮度与对比度

调整亮度:发现图片识别率并不高

关照矫正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);// 定义结构元素cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(15, 15));cv::Mat topHatMat, blackHatMat;// 形态学Top-Hat 顶帽cv::morphologyEx(srcGray, topHatMat,cv::MORPH_TOPHAT, element);// 形态学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;}


-------------------------------------------------------------------------------------------------------------------

关于图片的二值化:

阈值化(thresholding)可以看作是削波的一个特例,我们用下图说明阈值化的原理。

阈值化的原理

不难看出,只要令削波中的g1old=g2old就实现了阈值化。阈值就象个门槛,比它大就是白,比它小就是黑。经过阈值化处理后的图象变成了黑白二值图,所以说阈值化是灰度图转二值图的一种常用方法(我们以前介绍过图案化和抖动的方法)。进行阈值化只需给出阈值点g1old即可。一般情况下,阈值的选取对程序执行结果有很大的影响,在本程序中采取的是直方图求门限,迭代法求最佳阈值的方法,这个方法在数学上已被证明当图像像素概率分布逼近正态分布时是最佳的。阈值化处理后的结果,是一幅二值图像

阈值化处理后的结果

在这里,阈值的选取是很重要的,阈值如果过高,就会产生将图像主体误认为是背景的情况;阈值如果过低,则会将背景部分误认为是主体部分。因此,我们应该仔细选择阈值,我认为阈值不应该是一个固定的值,它的值应该随着图像的不同而不同。在本程序中,采取了动态求取阈值的方法。首先我们先求得被处理图像的灰度直方图,根据直方图求得最大灰度与最小灰度。我们设置阈值的初值为最大灰度与最小灰度值之和的一半。然后求得小于阈值部分灰度的平均值iMean1Gray和大于阈值部分的平均值iMean2Gray,将阈值重新设为这两个灰度均值 的一半,如此迭代,最后求得最佳阈值iThreshold。实验结果证明该阈值是可信的,基本上可以把主体与背景区分开来。求阈值的代码如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘...
    大川无敌阅读 13,822评论 0 29
  • 前言opencv在图像处理中使用广泛,许多常见的应用场景例如人脸识别,车牌识别等都是基于opencv开发的。本文是...
    肖丹晨阅读 4,972评论 0 4
  • 最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,videoCore等),...
    未来的路就在那阅读 1,979评论 1 1
  • 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提...
    沬日十七阅读 1,000评论 0 4
  • 我忘了 怎么去 了解别人的感觉
    也许Y阅读 174评论 0 1