阴影错觉(Optical illusion)的例子有很多,我们这里列举一个edward adelson的例子,首先观察下面的图像
请问棋盘上A和B两个方格哪个更亮?
相信大家的答案都是A方格更亮,毕竟看上去B方格是处在绿色圆柱体的阴影中。
但是实际的结果却出人意料,如果把这张图放到图像编辑软件,如photoshop中,你会发现A和B的是一样的。
还有一种证明方法,就是放置两个长条在棋盘上,这两个长条均通过A和B,并且长条的颜色是不变的,如下图所示:
我们用Opencv来验证,基于边缘的定义,我们可以假想,如果A和B具有不同的亮度,那么对于颜色不变的长条在A或者B中肯定会存在边缘,我们用如下代码测试:
Mat srcImg = imread("shadow-illusion2.jpg");
Mat srcImg_gray, cannyImg;
cvtColor(srcImg, srcImg_gray, CV_BGR2GRAY);
Canny(srcImg_gray, cannyImg, 10, 100);
imshow("src", srcImg);
imshow("canny", cannyImg);
waitKey(0);
其中shadow_illusion2是显示的上一张图,代码运行结果如下图所示:
请注意上图中红色的矩形框,这里面并没有包含边缘信息,所以可以肯定的是A和B具有相同的亮度。(红色矩形框是代码生成效果图后附加的)。
为什么我们的人眼视觉会告诉我们A和B具有不同的亮度呢?
一种解释是因为大脑以往的经验造成了大脑进行了某些特殊处理。以上图来说,因为绿色圆柱体的阴影挡住了B而没有挡住B,从我们以前的经验来说,由阴影方向可以判断光源位置,认为光源在右上角,也就认为B的亮度肯定不如A的亮度。
其实还有很多视觉错误的图片可以找到,有兴趣的人可以找找看。
参考链接:http://www.businessballs.com/shadow-optical-illusion.htm