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