Efficient Color Boundary Detection with Color-opponent Mechanisms算法学习笔记

这是一篇基于视觉颜色机制的边缘检测论文,原文分中文和英文版
中文版链接:中文版PDF
英文版链接:英文版PDF

项目主页:http://www.neuro.uestc.edu.cn/vccl/projcvpr2013.html

以下是我个人学习该算法后的理解,希望各位看官批评指正!

整个算法可分为以下几步:



1、输入一张彩色图像



2、 分别提取R-G-B三种颜色信息,并计算Y颜色信息,进行高斯滤波得到



3、设置连接权重ω ,通过式(1)得到R+wG和wR+G两种连接权值的的结果 $$Srg、Sgr$$(II层中处理),B-Y两个通道类似,可得到四个中间结果$$Srg、Sgr、Sby、Syb $$



4、III层(Cortex layer)对II层中的结果$$Srg、Sgr、Sby、Syb$$ 进行计算,公式如(6)所示:

其中:$$Sr-g+=-Sr+g- $$
$$Nr+g-、Nr-g+$$ 分别表示V1层神经元R-on/G-off 和 R-off/G-on的RF(由公式(3)(4)(5)得到的RF)。




取分母为16,则θi取[0,2π]之间相隔π/8的16个角度,由(6)式会得到16个结果,对应于16(程序中只用到了8个角,0到π)个不同朝向θi的滤波器结果,这个D(x,y)是对四个拮抗通道其中之一进行计算的结果,所以,四个通道会得到四组相应的D(x,y)。



四组D(x,y)值,通过(8)式,每组取其中的最大值可得到对应于四个通道的四个D(x,y),并对其进行线性归一化,将四个通道的响应归一化到[0,1]



输出四个归一化后的D(x,y)。



5、最终的轮廓响应为r(x,y),如公式(9)所示,r(x,y)是对步骤4中的D(x,y)取最大值的结果。


以下是我个人对作者代码的理解


流程图如下所示



主要函数功能为



1、Gaus(sgm)sgm为sigma值,返回一个滤波矩阵



2、SingleOpponent( map,opponent,sigma,weights )
参数:opponent为RG或BY两个值之一,分别代表两对拮抗通道
过程:对R、G、B、Y四个通道进行滤波,再计算R’+wG’、wR’+G’、B’+wY’、wB’+Y’,分别对应$$Srg、Sgr、Sby、Syb$$
返回:$$Srg、Sgr、Sby、Syb$$



3、DivGauss2D( sigma,seta ),seta为不通滤波器的朝向,返回一个滤波矩阵



4、conByfft( img,tpl )
参数:img为$$Srg、Sgr、Sby、Syb$$四个其中之一, tpl 为 DivGauss2D( )返回的结果进行归一化
过程:对img进行填充、傅里叶及其逆变换等处理
返回:与img相同大小的矩阵,即为$$Drgi)、Dgri )、Dbyi)、Dybi)$$



5、OrientedDoubleOpponent( map,opponent,sigma,angles,weights )
过程:调用SingleOpponent()、DivGauss2D()、conByfft()
返回:返回$$Drg、Dgr、Dby、Dyb$$



6、resDO( map,sigma,angles,weights )
过程:$$Drg、Dgr、Dby、Dyb$$都是xy8(如果angles设为8)的矩阵,即八组$$Drgi)、Dgri)、Dbyi)、Dybi)$$取八组$$Drgi)$$数据中每个 (x , y)点对应的最大值作为新的$$CBrg$$其他三组数据相同,其中$$CBrg( : , : )$$是$$Drg$$中的最大值,而Orients(:,:,1)是$$Drg$$中最大值在矩阵中的位置$$CBrg、CBgr、CBby、CByb$$分别代表四个通道得到的边缘矩阵,对每个像素点,取四个通道中的最大边缘值作为 Re ( : , : ) ,取该值在原矩阵中对应的angles值为theta( : , : )
返回:Re ( : , : )theta( : , : )矩阵,Re即为初步的边缘矩阵。



7、nonmax(im,theta)
参数:imresDO()的返回值Re进行归一化,thetaresDO()的返回值theta进行角度变换
过程:A点在方向1上有最大边界值a,而在方向1上相邻的两个点B,C也有计算得到的边界值b,但是a小于等于b,这说明A点的边界比B、C点的边界强度低,那么真正的边界应该是在B或C处取得,所以应该令A点处的边界值为0,这样可以保留最合适的边界点。
返回:返回比输入im小一个像素圈大小的边缘矩阵im



8、COBoundary(map,sigma,angles,weights)
参数:map为处理的图像,sigma、angles、weights为设置的参数(此算法需要设置的所有参数就是这三个)
过程:调用resDO()、nonmax(),对nonmax()中得到的im进行边缘填充0,得到最终的边界矩阵fb
返回:最终的轮廓矩阵fb


最后,我只想说,格式好难调,文中有些格式确实不好看,还请见谅!
时间: 2024-11-17 18:56:14

Efficient Color Boundary Detection with Color-opponent Mechanisms算法学习笔记的相关文章

Dojo学习笔记 9. dojo.graphics.color & dojo.uri.Uri

模块:dojo.graphics.color 下面是dojo里定义的颜色名称 dojo.graphics.color.named.white//白色 dojo.graphics.color.named.black//黑色 dojo.graphics.color.named.red//红色 dojo.graphics.color.named.green//绿色 dojo.graphics.color.named.blue//蓝色 dojo.graphics.color.named.navy//海军

Color.js增强你对颜色的控制

往逝之因 不要低头,皇冠会掉...  可你又没有皇冠 Color.js 增强你对颜色的控制 阅读目录 轻松管理颜色--color.js库 使用color.js Accessor Methods 你该知道的设计学知识 Color Methods Conversion and Construction Color.js是一个能加强前端开发中对颜色处理的第三方库. 假设你已经基本了解色彩通道.色彩空间.色相.饱和度.亮度.不透明度等概念.当然了,毕竟前端算是半只脚踏进设计领域了,相信这些概念难不到你.

java实现颜色Color对象和16进制之间的转换

package com.tsxs.test; import java.awt.Color; public class TestColor { public static void main(String[] args) { System.out.println(toHexFromColor(Color.BLUE)); System.out.println(toColorFromString(toHexFromColor(Color.BLUE))); } /** * Color对象转换成字符串 *

[Silverlight]16进制颜色转ARGB及Color转Int32

http://www.cnblogs.com/024hi/archive/2009/09/28/1576040.html [Silverlight]16进制颜色转ARGB及Color转Int32 16进制色字符串转ARGB 做Web的都喜欢用16进制字符串标识颜色,比如"#F5F5F5"这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:"#FFF5F5F5"(前两位标识Alpha,即透明度).这在XAML中没有任何问题,可是如果我们想在代码中设

android的color值

原文:http://blog.csdn.net/xinke87/article/details/6675114 <?xml version="1.0" encoding="utf-8" ?> <resources> <color name="white">#FFFFFF</color><!--白色 --> <color name="ivory">#FFFF

vb.net 函数或子程序的可选参数如何 传递color?

问题描述 问题,vb.net函数或子程序的可选参数如何传递color?SubchangebBackcolor(OptionalbackcolorAsColor=Color.Black)......EndSub 我这样写报错,高手能给指正一下吗? 解决方案 解决方案二:用重载吧,可选参数必须是常量解决方案三:回复shingoscar:我该如何使用重载呢?(我是新手)能贴下代码吗解决方案四:重载,就是几个函数的名称相同而参数不同.解决方案五:回复zj_zwl:谢谢,我再研究研究.解决方案六:或者把颜

jquery获取css的color值返回RGB的方法_jquery

本文实例讲述了jquery获取css的color值返回RGB的方法.分享给大家供大家参考,具体如下: css代码如下: a, a:link, a:visited { color:#4188FB; } a:active, a:focus, a:hover { color:#FFCC00; } js代码如下: var link_col = $("a:link").css("color"); alert(link_col); // returns rgb(65, 136,

COLORREF,COLOR,RGB,CString的转化总结分析_C 语言

一.COLORREF与RGB的相互转化RGB(r,g,b)是一个宏实际上它做得事是((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) rgb(r,g,b)   =   一个整型值   =   r   +   g   *   256   + b*255*256   COLORREF 是 一 个 32-bit 整 型 数 值,它 代 表 了 一 种 颜 色.你 可以 使 用 RGB 函 数

android:background=&amp;quot;@color/white&amp;quot; [create file color.xml at res/values/]

 <resources> <color name="white">#FFFFFF</color><!--白色 --> <color name="ivory">#FFFFF0</color><!--象牙色 --> <color name="lightyellow">#FFFFE0</color><!--亮黄色 --> <