《数字图像处理》第二章 2.1 视觉感知要素笔记

“第二章数字图像基础,超级难啃。”—不是我说的,是我朋友说的。
“2.1.1讲人眼结构,这东西对计算机视觉有啥用吗?我又不是学医!”—这依然不是我问的,是我朋友问的。
我的建议是,多啃几遍了哦,不如就像我,做多次笔记试试。还有啊,人眼结构这块要留意,后面遇到液态仿生镜头你就知道了。

一、人眼结构与成像原理

眼球分层与核心组件

在这里插入图片描述

1.1 眼球本体结构

外层: 角膜(透明,负责折射光线)和巩膜(保护结构) 。
中层: 虹膜(调节瞳孔大小控制进光量)、睫状体(调节晶状体曲率)和脉络膜(吸收散射光) 。
内层(视网膜):
锥状细胞:约600-700万个,位于中央凹,负责高分辨率、彩色视觉(明视觉) 。
杆状细胞:约7500-15000万个,分布广但连接共享神经,对低照度敏感(暗视觉) 。
盲点:无视细胞区域,由视神经出口形成 。
眼球内容物:
房水:填充前房和后房,维持眼压并营养角膜、晶状体 。
晶状体:弹性透明结构,通过改变曲率调节焦距(类似相机镜头) 。
玻璃体:凝胶状物质,支撑眼球形状并传递光线至视网膜 。

1.2 附属器官

保护与润滑结构
眼睑与睫毛:物理屏障,防止异物侵入;眨眼动作保持角膜湿润 。
结膜:覆盖眼睑内侧和巩膜表面,分泌黏液辅助润滑 。
泪器:泪腺分泌泪液清洁眼球,泪道排出多余液体 。
运动调节结构
外眼肌:6条肌肉协同控制眼球运动,实现快速扫视、追踪目标等功能 。

1.3 关键动态特性

瞳孔调节:虹膜通过肌肉收缩改变瞳孔大小,适应不同光照强度(动态对比度可达百万比一) 。
视网膜适应:从明到暗环境需约30分钟完成化学调整(如视紫红质再生),以恢复暗视觉 。

1.4 功能协同示例

当光线通过角膜→房水→瞳孔→晶状体→玻璃体到达视网膜后,感光细胞将光信号转化为电信号,经双极细胞→神经节细胞→视神经传递至大脑皮层,最终形成视觉 。若晶状体弹性下降(如老花眼),睫状体无法有效调节焦距,需借助光学镜片矫正 。

成像机制

晶状体通过改变形状调节焦距(14-17mm),类似相机镜头 。
视网膜中央凹类似CCD传感器,聚焦后光信号转换为电脉冲,由大脑解码 。

二、亮度适应与视觉现象

亮度适应(Brightness Adaptation)

动态范围: 人眼可适应光强范围达 1 0 10 10^{10} 1010
,但瞬时辨别的亮度级仅约 1 0 3 10^{3} 103
适应级别: 当前环境下的灵敏度水平,暗视觉(杆状体主导)与明视觉(锥状体主导)的切换需要时间(如暗适应约30分钟) 。

关键视觉现象

马赫带效应(Mach Bands)
现象:在均匀亮度区域边界处感知到虚假的亮/暗带(图1)。
原理:视觉系统增强对比度以突出轮廓 。
在这里插入图片描述

代码示例:生成灰度渐变条带并观察边界效应。

import numpy as np
import matplotlib.pyplot as plt

# 生成带有阶梯突变的渐变(模拟侧抑制)
steps = 10  # 阶梯数
step_width = 25  # 每个阶梯宽度(像素)
gradient = np.zeros((200, 256))

for i in range(steps):
    start = i * step_width
    end = start + step_width
    gradient[:, start:end] = i * (255 // steps)

plt.figure(figsize=(15, 3))
plt.imshow(gradient, cmap='gray', aspect='auto', interpolation='none')  # 禁用插值
plt.axis('off')
plt.title("Illustration of the Mach band effect.")
plt.show()

输出效果:渐变条带在相邻区域交界处出现亮/暗条纹。
在这里插入图片描述

同时对比(Simultaneous Contrast)
现象:相同灰度的小方块在不同背景中感知亮度不同。
代码示例:创建不同背景下的相同灰度方块。

import numpy as np
import matplotlib.pyplot as plt

# 创建黑色和白色背景 (明确使用uint8数据类型)
bg_dark = np.zeros((200, 200), dtype=np.uint8)        # 黑色背景 (0)
bg_light = np.ones((200, 200), dtype=np.uint8) * 255  # 白色背景 (255)

# 在中心添加相同灰度方块(灰度值=127)
patch_value = 127
patch = np.ones((50, 50), dtype=np.uint8) * patch_value
bg_dark[75:125, 75:125] = patch
bg_light[75:125, 75:125] = patch

# 可视化对比(强制显示范围为0-255)
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(bg_dark, cmap='gray', vmin=0, vmax=255, interpolation='none')  # 关键修复点
plt.title("Dark Background: Patch Looks Brighter")
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bg_light, cmap='gray', vmin=0, vmax=255, interpolation='none')  # 关键修复点
plt.title("Light Background: Patch Looks Darker")
plt.axis('off')

plt.tight_layout()
plt.show()

输出效果:中心方块在深背景中显得更亮,在浅背景中显得更暗。
在这里插入图片描述

三、视觉错觉与图像处理启示

错觉类型
几何错觉:平行线因交叉线干扰显得不平行 。
亮度错觉:不存在的中心形状因背景模式被感知 。
对图像处理的启发
增强算法设计:利用马赫带效应优化边缘检测,避免过度锐化导致的虚假轮廓 。
显示技术优化:考虑同时对比现象,调整UI界面对比度以提升用户体验 。

四、总结与实践建议

理论核心:人眼通过分层结构和动态适应机制实现高效视觉感知,但其非线性特性(如亮度对数响应)需在图像处理中被建模 。

参考文献
《数字图像处理》中文译本第二章 §2.1
人眼亮度适应与错觉机制详解
视觉现象模拟代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值