使用NNO区域进行色偏检测
想做图像的色偏检测,网上的资料全是同一套代码,就是2013年那个计算等价圆,然后直接用D-r>9 and K>0.6) or K>1.5,判断的代码(相信大家都查到过了)
但是色偏问题并不是这样简单的判断就可以的,还分为本质色偏和真实色偏,比如草地或天空的图像,本来就应该偏绿和偏蓝,那么就是本质色偏,不是真正的色偏。
然后我就找相关论文来看了,发现在这块的研究其实也不多,基本上就是重庆大学和武汉理工大学有硕士做相关研究,所以看了看他们的硕士论文,然后自己实现了2017年武汉理工那篇硕士论文。
第一次看到论文里写NNO区域我是懵逼的,查博客也没有相关的介绍,更别提怎么提取NNO的代码了,本着自利利他的原则,我还是开启下这里的空白吧!
NNO区域介绍
NNO全称near neutral objects,代表无色差表面,就是图像中本质色为白色或灰色的表面。
为什么要提取NNO区域做色偏检测呢,因为白色区域的表现色有效反应了图像的整体颜色,所以一般做法是根据原图像的等效圆参数与NNO区域的等效圆参数进行对比,利用变化趋势去判断图像是否偏色。
NNO区域提取步骤
1、此论文为了提高计算速率,首先将图像进行分块,可以大大缩短计算时间。
2、此论文提出一种自适应提取NNO区域的方法,按基于空间汇集策略的等效圆计算方法,完成分块、颜色空间转换、标记暗色块,计算得到等效圆圆心和半径
def NNO(h, w, image):m, n = 64, 64 # 划分为64*64的块h_new = h-(h%m)w_new = w-(w%n)image = image[0:h_new,0:w_new]block_h = h_new//mblock_w = w_new//naveraged = block(block_h,block_w,image, m, n)lab = cv2.cvtColor(averaged,cv2.COLOR_BGR2LAB)l,a,b = cv2.split(lab)h, w = l.shapel1 = (l/255*100).astype(np.uint8) L_area = np.zeros((h,w))L_area[np.where(l1>=20)and np.where(l1<=95)] = 1abvalue = np.zeros((m,n))for i in range(m):for j in range(n):aij = (a[i,j]-128)*(a[i,j]-128)bij = (b[i,j]-128)*(b[i,j]-128)abvalue[i,j] = math.sqrt(aij*aij+bij*bij)F = abvalue.sum()T = 0for i in range(m):for j in range(n):T += ((F-abvalue[i,j])/((m*n-1)*F))*abvalue[i,j]T = 1/2 * Tmask = np.zeros((h,w)) mask[np.where(abvalue<T)] = 1 NNO = L_area * maskimage_copy = copy.deepcopy(averaged)image_copy[np.where(NNO!=1)] = 0lab_nno = cv2.cvtColor(image_copy,cv2.COLOR_BGR2LAB)l_nno, a_nno,b_nno = cv2.split(lab_nno)u,D_sigma,sigma = DKr(a, b, m, n)u_nno,D_sigma_nno,sigma_nno = DKr(a_nno,b_nno, m, n)try:D_sigma_cr = (D_sigma - D_sigma_nno)/D_sigmau_cr = (u - u_nno)/usigma_cr = (sigma - sigma_nno)/sigmaexcept:if D_sigma == 0:D_sigma_cr = 0if u == 0:u_cr = 0if sigma == 0:sigma_cr = 0return D_sigma_cr, u_cr, sigma_cr,D_sigma_nno
全部代码
写在了我的github
https://github.com/jiafw/Color-Cast-Detection
如果对你有帮助,可以给个star~~~
复现数据不能保证和原文一模一样,但是测试结果还是可以的。
使用NNO区域进行色偏检测相关推荐
- 运用javacv对视频做色偏检测
运用java对视频做色偏检测 pom文件 <dependencies><dependency><groupId>org.bytedeco</groupId&g ...
- 基于 CNN 特征区域进行目标检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 目标检测是目前计算机视觉领域最热门的技术之一,该领域的研究一直在以 ...
- 批量网站DNS区域传送漏洞检测——bash shell实现
燕云 · 2014/05/21 12:18 0x00 背景 下面图中的eecs.cc为笔者自建的一台具有私有根的DNS服务器,且对外开放了区域传送权限,故有结果:cc区域传送成功.该图只是一个实验验证 ...
- 气象雷达回波图中区域地物杂波检测算法
摘要 针对多普勒气象雷达回波图中的地物杂波只能通过肉眼识别且效率低下的问题,提出一种结合卷积神经网络模型与区域重叠灰度共生矩阵的算法,以实现对雷达回波图中特定杂波区域的高效识别.首先设计一个卷积神经网 ...
- HybridNets:多任务端到端感知网络 目标检测+可行驶区域+车道线检测
端到端的多任务感知网络:目标检测.车道线检测.可行驶区域分割,性能优于YOLOP,速度可实时. 论文 HybridNets: End-to-End Perception Network,代码已开源. ...
- opencv+色偏检测
// sepiancheck.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "cv.h" #in ...
- 【航空和卫星图像中检测建筑物】使用gabor特征和概率的城市区域和建筑物检测研究(Matlab代码实现)
- java OpenCV 图片清晰度、色偏和亮度检测
基于OpenCV对图片清晰度.色偏和亮度的检测(java版) 本文链接:https://blog.csdn.net/qq_34997906/article/details/87970817 由来:近期 ...
- 视频清晰度、色偏以及亮度异常检测
原文链接:http://blog.csdn.net/kklots/article/details/12720359 昨天老板临时交代一个活,要求通过算法检测监控设备是否存在失焦.偏色.亮度异常等问题. ...
最新文章
- Vista中使用率最高的11条命令
- POJ2718【DFS】
- linux 内核空间 缺页,Linux-3.14.12内存管理笔记【缺页异常处理(1)】
- mysql事务和锁innodb,MySQL - InnoDB 锁与事务(三)隔离级别与表的关系
- 用C#设计一个四则运算器
- Python入门--字符串的判断操作
- 团购系统开发,开源团购商城系统,PC+WAP+APP三合一
- 使用metamask发起交易的时候,交易卡在pending了怎么办?
- PWM的基本原理及其应用实例
- C# Winform窗体切换与关闭
- grep的-A-B-选项详解
- 程序员每天会阅读哪些技术网站来提升自己?
- java 时间片_时间片-简介
- Infopath入门到精通系列-4 Infopath myschema.xsd文件 解析
- 服务器项目验签失败,服务器验签失败
- easypoi 语法_英语语法那些事儿
- 第五章 spring-context之LifecycleProcessor( 生命周期 )
- 写给想要开始跑步的人
- 如果你把每一天都当作生命中最后一天去生活的话,那么有一天你会发现你是正确的
- 单片机的机器周期、震荡周期和指令周期之间的关系,工作原理。