設(shè)計(jì)一個(gè)封閉環(huán)境內(nèi)的眼刺激系統(tǒng):
一個(gè)人完整的視角
人在水平面的視野,單眼視野界限為標(biāo)準(zhǔn)視線每側(cè)94°~104°。雙眼視區(qū)大約在每側(cè)62°以內(nèi)的區(qū)域,在這個(gè)區(qū)域里還包括辨別字的視線角度為10°~20°,辨別字母的視線角度為5°~30°,在各自的視線范圍以外,字和字母趨于消失。對(duì)于特定的顏色的辨別,視線角度為30°~60°。
垂直平面的視野是:假定標(biāo)準(zhǔn)視線是水平的,定為0°,則最大視區(qū)為視平線以上50°和視平線以下70°。顏色辨別界限為視平線以上30°,視平線以下40°,實(shí)際上人的自然視線是低于標(biāo)準(zhǔn)視線的,在一般狀態(tài)下,站立時(shí)自然視線低于水平線10°,坐著時(shí)自然視線低于水平視線15°。
眼垂直視野可以看到標(biāo)準(zhǔn)視線上約50°、下約70°的范圍,水平視野可以左右104°的范圍。人在眼睛不轉(zhuǎn)動(dòng)的情況下視野是十分有限的,能夠集中注意力水平視野是40°,垂直視野15°。
我再補(bǔ)充一個(gè)縱深視野:
1、0.2-11m之間,我們能獲得一個(gè)“真實(shí)”3D的視野,這也是我們的舒適景深;
2、11-20m間,我們依然能夠通過(guò)雙眼在視網(wǎng)膜上成像的差別,獲得一個(gè)“邊緣”的3D視野;
3、而20米之外的事物,我們只能得到一個(gè)“扁平”的2D視野,因?yàn)榫跋笸ㄟ^(guò)雙眼的成像差別太小,無(wú)法分辨。
其實(shí)這說(shuō)的更沒(méi)說(shuō)一樣
主要刺激光源(3000-3500K):
將主要刺激光源安置在眼罩內(nèi)部,以確保照明均勻且集中在用戶的視野中。
盡量避免直接光照用戶的眼睛,可以考慮使用漫射器材或?qū)⒐庠措[藏在眼罩的設(shè)計(jì)中,以防止強(qiáng)烈光線對(duì)用戶眼睛的刺激。
背景光源(850納米):
背景光源可以被用來(lái)模擬夜視或者在VR場(chǎng)景中提供某種環(huán)境信息。
與主光源相比,背景光源的亮度可以相對(duì)較低,以確保不會(huì)對(duì)用戶體驗(yàn)造成干擾。
考慮采用柔和的背景照明,以避免過(guò)于刺眼或不自然的效果。
燈光布局和均勻性:
確保燈光布局均勻,以避免在眼罩內(nèi)產(chǎn)生不均勻的亮度或陰影。
考慮使用多個(gè)光源來(lái)增加照明的均勻性,特別是在眼罩內(nèi)覆蓋范圍較大的情況下。
對(duì)背景光源和刺激光源進(jìn)行不同的光學(xué)評(píng)價(jià)可能是基于實(shí)驗(yàn)、應(yīng)用或觀察需求而定的。以下是一些常見的因素,這些因素可能導(dǎo)致對(duì)它們的光學(xué)評(píng)價(jià)存在差異:
感知效果:
刺激光源通常是實(shí)驗(yàn)中要引起注意的主要光源,其顏色、強(qiáng)度和變化可能對(duì)實(shí)驗(yàn)結(jié)果產(chǎn)生直接影響。因此,對(duì)刺激光源的評(píng)價(jià)可能更關(guān)注其在實(shí)驗(yàn)中產(chǎn)生的感知效果。
背景光源可能更側(cè)重于提供一種環(huán)境、背景或輔助信息,其顏色和亮度可能被調(diào)整以創(chuàng)造某種氛圍,而不是成為實(shí)驗(yàn)的主要焦點(diǎn)。
顏色溫度:
刺激光源的顏色溫度可能會(huì)更直接地影響觀察者的認(rèn)知和情緒。在許多實(shí)驗(yàn)和應(yīng)用中,顏色的選擇對(duì)于調(diào)查不同條件下的感知和行為反應(yīng)非常重要。
背景光源的顏色溫度則可能更多地取決于設(shè)計(jì)的整體氛圍和實(shí)驗(yàn)的目的。它通常被設(shè)計(jì)成輔助刺激光源,以創(chuàng)造更逼真的環(huán)境。
亮度和對(duì)比度:
刺激光源可能需要更高的亮度和對(duì)比度,以確保在實(shí)驗(yàn)中引起足夠的關(guān)注和反應(yīng)。
背景光源通常會(huì)以相對(duì)較低的亮度出現(xiàn),以避免干擾實(shí)驗(yàn)者或觀察者對(duì)刺激光源的關(guān)注。
3000-3500K,表示這個(gè) LED 燈泡的光的色溫在3000到3500開爾文之間。這對(duì)應(yīng)于暖白色光,適合用于舒適的環(huán)境照明。 850納米(NM),表示這個(gè)光源的波長(zhǎng)為850納米。這是紅外光譜中的近紅外范圍。
刺激光源和背景光源對(duì)瞳孔測(cè)量有一定的影響,這取決于它們的亮度、顏色和變化。
刺激光源的影響:
亮度:刺激光源的高亮度可能導(dǎo)致瞳孔收縮,尤其是在較暗的環(huán)境中。這可能會(huì)對(duì)瞳孔測(cè)量的基線產(chǎn)生影響。
顏色:不同顏色的光源可能會(huì)導(dǎo)致瞳孔有不同的反應(yīng)。一些顏色可能引起更強(qiáng)烈或更迅速的瞳孔反應(yīng)。
背景光源的影響:
亮度:背景光源的高亮度可能導(dǎo)致瞳孔收縮,尤其是在相對(duì)較暗的環(huán)境中。背景光源的亮度水平與刺激光源的亮度之間的對(duì)比可能影響瞳孔測(cè)量的靈敏性。
顏色:背景光源的顏色可能影響瞳孔的基礎(chǔ)大小和對(duì)刺激光源顏色變化的響應(yīng)。一些顏色可能導(dǎo)致瞳孔對(duì)刺激光源的反應(yīng)更為顯著。
光源變化的影響:
變化頻率:如果刺激光源或背景光源有頻繁的變化(例如閃爍),這可能導(dǎo)致瞳孔的相應(yīng)變化。這在進(jìn)行某些類型的瞳孔反應(yīng)實(shí)驗(yàn)時(shí)需要特別注意。
持續(xù)性變化:長(zhǎng)時(shí)間的光源變化可能導(dǎo)致瞳孔適應(yīng),使其在測(cè)量過(guò)程中產(chǎn)生動(dòng)態(tài)的響應(yīng)。
里面控制的參數(shù)就是亮度和閃爍了,接下來(lái)就是寫一些代碼:
const int warmWhiteLED = 9; // 連接暖白LED的引腳 const int infraredLED = 10; // 連接紅外LED的引腳 void setup() { pinMode(warmWhiteLED, OUTPUT); pinMode(infraredLED, OUTPUT); } void loop() { // 控制暖白LED analogWrite(warmWhiteLED, 128); // 設(shè)置PWM值來(lái)調(diào)整亮度 delay(1000); // 延時(shí)1秒 // 控制紅外LED digitalWrite(infraredLED, HIGH); // 開啟LED delay(500); // 延時(shí)0.5秒 digitalWrite(infraredLED, LOW); // 關(guān)閉LED delay(500); // 延時(shí)0.5秒 }
最簡(jiǎn)單的Arduino
const int warmWhiteLED = 9; // 連接暖白LED的引腳 const int infraredLED = 10; // 連接紅外LED的引腳 void setup() { pinMode(warmWhiteLED, OUTPUT); pinMode(infraredLED, OUTPUT); } void loop() { // 控制暖白LED的亮度 for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(warmWhiteLED, brightness); // 設(shè)置PWM值來(lái)調(diào)整亮度 delay(10); // 延時(shí)10毫秒,可調(diào)整過(guò)渡的速度 } delay(1000); // 延時(shí)1秒 // 控制紅外LED的亮度和閃爍 for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(infraredLED, brightness); // 設(shè)置PWM值來(lái)調(diào)整亮度 delay(10); // 延時(shí)10毫秒,可調(diào)整過(guò)渡的速度 } delay(1000); // 延時(shí)1秒 for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(infraredLED, brightness); // 設(shè)置PWM值來(lái)調(diào)整亮度 delay(10); // 延時(shí)10毫秒,可調(diào)整過(guò)渡的速度 } delay(1000); // 延時(shí)1秒 }
使用for循環(huán)變得更絲滑一些。
這里就是想著也可以提前預(yù)設(shè)一些刺激的規(guī)則,在樹莓派上面可以這樣寫:
import RPi.GPIO as GPIO import time # 定義LED引腳 warm_white_led_pin = 17 # 適應(yīng)您的硬件設(shè)置 infrared_led_pin = 18 # 適應(yīng)您的硬件設(shè)置 # 初始化GPIO設(shè)置 GPIO.setmode(GPIO.BCM) GPIO.setup(warm_white_led_pin, GPIO.OUT) GPIO.setup(infrared_led_pin, GPIO.OUT) # 定義LED控制函數(shù) def set_led_brightness(pin, brightness): # 控制LED亮度,brightness范圍0-100 pwm = GPIO.PWM(pin, 100) # 頻率設(shè)置為100Hz pwm.start(brightness) def blink_led(pin, frequency, duration): # 控制LED閃爍,frequency為頻率,duration為持續(xù)時(shí)間 pwm = GPIO.PWM(pin, frequency) pwm.start(50) # 亮度設(shè)置為50% time.sleep(duration) pwm.stop() # 定義預(yù)先設(shè)計(jì)好的刺激規(guī)則 def apply_stimulus_rule(rule): if rule == "rule1": set_led_brightness(warm_white_led_pin, 50) blink_led(infrared_led_pin, 2, 5) elif rule == "rule2": set_led_brightness(warm_white_led_pin, 75) blink_led(infrared_led_pin, 5, 7) # 添加其他規(guī)則... # 測(cè)試 apply_stimulus_rule("rule1") # 清理GPIO設(shè)置 GPIO.cleanup()
可能對(duì)于所以樹莓派控制這樣簡(jiǎn)單的功能性價(jià)比不高,可以在MCU上面實(shí)現(xiàn):
import machine import time # 定義LED引腳 warm_white_led_pin = 19 # 適應(yīng)您的硬件設(shè)置 infrared_led_pin = 18 # 適應(yīng)您的硬件設(shè)置 # 初始化LED引腳 warm_white_led = machine.PWM(machine.Pin(warm_white_led_pin), freq=1000, duty=0) infrared_led = machine.PWM(machine.Pin(infrared_led_pin), freq=1000, duty=0) # 定義LED控制函數(shù) def set_led_brightness(led, brightness): # 控制LED亮度,brightness范圍0-1023 led.duty(brightness) def blink_led(led, frequency, duration): # 控制LED閃爍,frequency為頻率,duration為持續(xù)時(shí)間 led.freq(frequency) time.sleep(duration) led.freq(0) # 定義預(yù)先設(shè)計(jì)好的刺激規(guī)則 def apply_stimulus_rule(rule): if rule == "rule1": set_led_brightness(warm_white_led, 512) blink_led(infrared_led, 2, 5) elif rule == "rule2": set_led_brightness(warm_white_led, 768) blink_led(infrared_led, 5, 7) # 添加其他規(guī)則... # 測(cè)試 apply_stimulus_rule("rule1") # 清理 warm_white_led.deinit() infrared_led.deinit()
那么也可以加入一些遠(yuǎn)程控制的功能,使用串口:
import machine import time import ustruct # 定義LED引腳 warm_white_led_pin = 19 # 適應(yīng)您的硬件設(shè)置 infrared_led_pin = 18 # 適應(yīng)您的硬件設(shè)置 # 初始化LED引腳 warm_white_led = machine.PWM(machine.Pin(warm_white_led_pin), freq=1000, duty=0) infrared_led = machine.PWM(machine.Pin(infrared_led_pin), freq=1000, duty=0) # 初始化串口 uart = machine.UART(0, baudrate=115200, tx=17, rx=16) # 適應(yīng)您的硬件設(shè)置 # 定義LED控制函數(shù) def set_led_brightness(led, brightness): # 控制LED亮度,brightness范圍0-1023 led.duty(brightness) def blink_led(led, frequency, duration): # 控制LED閃爍,frequency為頻率,duration為持續(xù)時(shí)間 led.freq(frequency) time.sleep(duration) led.freq(0) # 定義通過(guò)串口控制LED的函數(shù) def control_led_via_serial(): while True: if uart.any(): data = uart.read(4) # 期望接收4字節(jié)數(shù)據(jù) if data: brightness, frequency = ustruct.unpack('hh', data) set_led_brightness(warm_white_led, brightness) blink_led(infrared_led, frequency, 1) # 1秒的閃爍示例 # 啟動(dòng)串口控制 control_led_via_serial()
過(guò)串口接收兩個(gè)16位整數(shù),分別代表LED的亮度和頻率。
這兩個(gè)值使用ustruct.unpack解包??梢酝ㄟ^(guò)串口發(fā)送相應(yīng)的二進(jìn)制數(shù)據(jù)來(lái)控制LED。
import struct brightness = 512 frequency = 2 data = struct.pack('hh', brightness, frequency) uart.write(data)
上位機(jī)這里可以這樣寫,這篇文章寫的很倉(cāng)促,很多功能沒(méi)有考慮到,如果有需要的或者更加專業(yè)的建議可以告訴我。
審核編輯:湯梓紅
-
光源
+關(guān)注
關(guān)注
3文章
693瀏覽量
67704 -
代碼
+關(guān)注
關(guān)注
30文章
4726瀏覽量
68248 -
視網(wǎng)膜
+關(guān)注
關(guān)注
0文章
34瀏覽量
12755 -
vr
+關(guān)注
關(guān)注
34文章
9630瀏覽量
149983
原文標(biāo)題:設(shè)計(jì)一套眼內(nèi)刺激系統(tǒng).上-光源
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論