首页 > 创意 > 给猫测视力和对比敏感度,详解

给猫测视力和对比敏感度,详解

注意:本文保留所有权利。基于下述实验方法发文章的话,要和我联系,根据文章的实验目的,我可能要求作为第一或者第二至第N作者。如果出于非商业和非科研的目的,您可以自由利用文中的方法和程序。

基本原理:猫是好奇的动物,本能会追逐移动的物体。利用计算机产生一个条纹图形,它的对比度和空间频率已知,然后放置在一个背景色块之上移动,背景色块的颜色是前景色的平均值。如果猫能够看到,那么就会有追逐行为发生,反之则没有。为了一开始吸引猫咪的注意力,前景条纹还要在一个背景色明显不同的地方先移动一下。

第一步:产生前景和背景图片:

下面是Matlab程序,用来产生前景条纹和背景色块。

clear all; close all

% 清理工作区

w=200;% 产生一个长宽都是200个像素的图片

k=72;    % 空间频率,这里是在200个像素的长度里面,有k个周期,实际的定义需要根据具体显示器的大小而定,

n=256^2*1/3 

% 65536是屏幕的最大亮度,也就是全白

% n定义的是亮度的最高值,这个数值可以定义对比度

alpha=135;%条纹旋转的角度,你可以检查猫咪各个角度的对比敏感度

a=ones(w,1); % 产生一个单位矩阵

dx=2kpi/w; % 每一个像素所需要的变化值

b=[0:dx:2kpi-dx];% 从0到2kpi,每个点均匀变化

c=(sin(b)+1)/2;% 产生正弦曲线,并且平移到x轴以上

d=c.*n;% 纵向放大正弦曲线

e=a*d; % 将正弦曲线扩展成平面

e=uint16(e); % 转化成16位整型整数

e=256^2-e; % 黑白颠倒一下

backgrounds=uint16(ones(600,800).mean2(e));% 产生一个800600大小的背景色块

e=imrotate(e,alpha,’bicubic’,'crop’); %把前景条纹旋转成指定的角度

e=e(50:150,50:150); %旋转以后周围会有黑边,所以只取中间的部分。

imwrite(backgrounds,’b1.tif’,'tif’);% 保存背景图片,文件名称是b1.tif

imwrite(e,’e1.tif’,'tif’); %保存前景图片,文件名是e1.tif

figure(1), imshow(e); %显示前景图片。

第二步:

建立一个空白的演示文稿,PC上用PPT,Mac上用keynote,Linux上用Open Office。不失一般性,以Keynote为例。

建立空白演示文稿。大小是1024768,将背景色块和前景色块插入。因为我们建立的背景色块是800600,所以有一部分空白的区域。注意,前景色块是在背景色块之上的。

创建一个动画,让前景色块首先在空白区域上移动,然后以另一种运动方式在背景色块上移动,比如在空白区域上先水平移动几次,然后进入背景色块,进行垂直运动。

第三步:

重复第一步。选择其他的对比度和空间频率。重复第二步,复制第一张幻灯,但是选择新建的前景图像与背景图像。

根据需要测量的需要来选择对比度和空间频率。

第四步:测量

首先要对显示器的屏幕进行测光,找一个全白的图片,测量显示器9宫格位置上的亮度,平均,三次。找一张全黑的图片,再测。分别获得显示器最亮和最暗的照度。分别对应的是65536的灰度值和0的灰度值,不妨假设灰度值和亮度是线性关系,当然最好也验证一下。总之,对比度的计算方法就是条纹图形中=(max-min)/(max+min)

空间频率需要和显示器相对应,比如12寸4:3的笔记本,显示分辨率设定为1024768,那么水平或垂直两点的距离,就是12(英寸)25.4(mm/英寸)/54/1024=0.238mm。那么200个像素含有k个周期,就意味着空间频率=k/(2000.238)(mm-1)线。注意,同时需要设定猫的测量距离。这个可以用一个玻璃罩子来控制猫到显示器之间的距离。要再利用这个距离算一下线数与角度之间的对应关系。把mm-1的单位转换成cycle/degree的单位。

测量时,将猫咪放再玻璃罩前,播放演示文稿。如果猫咪出现了追随运动,则认为它可以看见,否则则不能。

注意测量时候的背景光。推荐使用全黑的暗环境。

结果:进宝的测试录像,录像中,进宝的点头动作表明它可以看见前景条纹在背景中的移动:http://hellotxt.com/v/mhS

             更新:http://hellotxt.com/v/mhSy

讨论:

首先,基于上述实验方法发文章的话,要和我联系,根据文章的实验目的,我可能要求作为第一或者第二至第N作者。

猫眼看似很强大,其实视力很差,据先贤们的在体和离体实验(faint,还有离体),猫的视力大概在5.5 c/d一下。人类正常的视力是1.0,也就是1′的视角,也就是1度的范围内有30次黑白重复的条纹,即30 c/d,按照我国的视力表,猫也就大概是0.1到0.2的视力吧。另外,猫没有红色的视锥细胞。所以只能分辨绿色、黄色和蓝色的组合。

由于猫的瞳孔不是圆形的,在亮环境下,其实各个方向的成像质量并不相同,如果要严格起见,一是应该在暗环境下测量,另一可以考虑散瞳。

致谢:

感谢进宝同学的加盟演出。

参考:

关于对比敏感度的基本知识,参考:讲课:调制传递函数- 金色葡萄的国内精华区

Matlab文件,keynote演示文稿,和已经做好的各个角度的条纹图像打包:http://goldengrape.org/?attachment_id=1589

分类: 创意 标签: , ,

1 Tweet

  1. 2009年4月19日21:28 | #1

    New blog post: 给猫测视力和对比敏感度,详解 http://tinyurl.com/cqkodu

    This comment was originally posted on Twitter

  2. 2009年4月20日15:25 | #2

    那个hellotxt的地址是一个404错误?

  3. 2009年4月23日18:01 | #3

    这个真的会有用吗~~因为我也有养猫~

  4. 金色葡萄
    2009年4月24日14:59 | #4

    这个要看你家猫咪的好奇心了。整个测试从理论上来讲没有什么问题。查到的古老文献中,也有类似的方法,用格栅遮挡食物来测试的。我家进宝也进行了阳性测试和阴性对照。不过正常猫的标准倒是没有足够的标准。看到的文献里一般是在5 c/d左右。也就是可以分辨60’/5/2=10‘的分角。

    其实对于其他有好奇心的动物,或者本能追逐移动物体的动物,这个方法应该也是可以的。不过对于爬行或者昆虫,使用液晶屏的话要小心,因为液晶屏显示的是偏振光,有些动物是对偏振光敏感的。不要引入更多的变量

  5. 2009年5月13日03:45 | #5

    啊。。好复杂啊 @_@ 不过我家密密视力应该还不错,我动个光标他都眼珠骨碌碌的要扑到屏幕上去了。。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

Additional comments powered by BackType