2009年4月19日星期日

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

注意:本文保留所有权利。基于下述实验方法发文章的话,要和我联系,根据文章的实验目的,我可能要求作为第一或者第二至第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

讨论:

首先,基于上述实验方法发文章的话,要和我联系,根据文章的实验目的,我可能要求作为第一或者第二至第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

没有评论:

发表评论