MaixBit Visualization 완성편
지난번 기사에서 음원 시각화를 시도해 동작 확인을 했지만 기본적으로 예상한 동작대로 할 수 있으니 소개해 드리겠습니다.
음원 시각화 완성형pic.twitter.com/xVNy3NBgVY - AIRPOCKET@rastaman vibration(@AirpocketRobot)December 20, 2020
2.하드웨어 면
하드웨어 사용Maix Bit 및 6+1 마이크 어레이.접속 등은 참조저번 보도하세요.
3.코딩
from Maix import MIC_ARRAY as mic
from Maix import FPIOA
from fpioa_manager import fm
import lcd
import sensor
import gc
from Maix import utils #heap mem使用量確認及び設定用
utils.gc_heap_size(2500000) #Heap mem山盛り設定 soundmap画像を480*480に引き伸ばし処理するため増量必要。
lcd.init()
lcd.direction(lcd.YX_LRDU) #soundmapとcameraイメージの向き合わせのため、hmirrorとvflipと組み合わて使用。
sensor.reset()
sensor.set_auto_gain(1) #自動ゲインは入れましょう。
sensor.set_auto_whitebal(1) #自動WBも入れましょう
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(3)
sensor.set_vflip(0)
sensor.run(1)
mic.init()
Fpioa = FPIOA()
LEDdir = (0,0,0) #マイクアレイモジュールのLEDインジケーター表示。RGBの輝度を0-255で設定。まぶしいのでいらない。
#Maxi Bit用のピン設定。
Fpioa.set_function(23, fm.fpioa.I2S0_IN_D0);
Fpioa.set_function(22, fm.fpioa.I2S0_IN_D1);
Fpioa.set_function(21, fm.fpioa.I2S0_IN_D2);
Fpioa.set_function(20, fm.fpioa.I2S0_IN_D3);
Fpioa.set_function(19, fm.fpioa.I2S0_WS);
Fpioa.set_function(18, fm.fpioa.I2S0_SCLK);
Fpioa.set_function(17, fm.fpioa.GPIOHS28);
Fpioa.set_function(15, fm.fpioa.GPIOHS27);
while True:
img = sensor.snapshot() #カメラ画像取得
soundmap = mic.get_map() #マイクアレイから音源の推定位置を16*16pixelのgrayscaleで求める。
sounddir = mic.get_dir(soundmap) #soundmapから音源方向を求める?
mic.set_led(sounddir,(LEDdir)) #マイクアレイモジュールのLEDを光らせる。
soundmap = soundmap.copy((4,4,8,8)) #サウンドマップの画格をカメラに合わせるため、中央8*8pixcelを切り出す
soundmap = soundmap.resize(240,240) #サウンドマップをカメラ画像に合わせるため240*240pixelに拡大
maskmap = soundmap.copy() #soundmapとカメラ画像を合成する際のマスク様画像を作成
maskmap = maskmap.binary([(1,255)]) #maskmapを二値化してマスクにする。
soundmap = soundmap.to_rainbow(1) #soudnmapをレインボーカラーに変更
img = img.copy((30,0,240,240)) #合成する前にカメラ画像をsoundmapとサイズ合わせる。
img.blend(soundmap,alpha = 150,mask = maskmap) #マスクを使い、soundmapの音検出部分のみをカメラ画像に重ね合わせる。alpha値が大きいほど音の表示が薄くなる。
lcd.display(img)
mic.deinit()
4.요약
from Maix import MIC_ARRAY as mic
from Maix import FPIOA
from fpioa_manager import fm
import lcd
import sensor
import gc
from Maix import utils #heap mem使用量確認及び設定用
utils.gc_heap_size(2500000) #Heap mem山盛り設定 soundmap画像を480*480に引き伸ばし処理するため増量必要。
lcd.init()
lcd.direction(lcd.YX_LRDU) #soundmapとcameraイメージの向き合わせのため、hmirrorとvflipと組み合わて使用。
sensor.reset()
sensor.set_auto_gain(1) #自動ゲインは入れましょう。
sensor.set_auto_whitebal(1) #自動WBも入れましょう
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(3)
sensor.set_vflip(0)
sensor.run(1)
mic.init()
Fpioa = FPIOA()
LEDdir = (0,0,0) #マイクアレイモジュールのLEDインジケーター表示。RGBの輝度を0-255で設定。まぶしいのでいらない。
#Maxi Bit用のピン設定。
Fpioa.set_function(23, fm.fpioa.I2S0_IN_D0);
Fpioa.set_function(22, fm.fpioa.I2S0_IN_D1);
Fpioa.set_function(21, fm.fpioa.I2S0_IN_D2);
Fpioa.set_function(20, fm.fpioa.I2S0_IN_D3);
Fpioa.set_function(19, fm.fpioa.I2S0_WS);
Fpioa.set_function(18, fm.fpioa.I2S0_SCLK);
Fpioa.set_function(17, fm.fpioa.GPIOHS28);
Fpioa.set_function(15, fm.fpioa.GPIOHS27);
while True:
img = sensor.snapshot() #カメラ画像取得
soundmap = mic.get_map() #マイクアレイから音源の推定位置を16*16pixelのgrayscaleで求める。
sounddir = mic.get_dir(soundmap) #soundmapから音源方向を求める?
mic.set_led(sounddir,(LEDdir)) #マイクアレイモジュールのLEDを光らせる。
soundmap = soundmap.copy((4,4,8,8)) #サウンドマップの画格をカメラに合わせるため、中央8*8pixcelを切り出す
soundmap = soundmap.resize(240,240) #サウンドマップをカメラ画像に合わせるため240*240pixelに拡大
maskmap = soundmap.copy() #soundmapとカメラ画像を合成する際のマスク様画像を作成
maskmap = maskmap.binary([(1,255)]) #maskmapを二値化してマスクにする。
soundmap = soundmap.to_rainbow(1) #soudnmapをレインボーカラーに変更
img = img.copy((30,0,240,240)) #合成する前にカメラ画像をsoundmapとサイズ合わせる。
img.blend(soundmap,alpha = 150,mask = maskmap) #マスクを使い、soundmapの音検出部分のみをカメラ画像に重ね合わせる。alpha値が大きいほど音の表示が薄くなる。
lcd.display(img)
mic.deinit()
4.요약
음원을 시각화하여 카메라 이미지와 겹쳐 음원 위치를 직관적으로 확인할 수 있다br/>
카메라와 마이크 진열의 시각이 다르기 때문에 그 중 하나에 맞춰야 하지만 이번에는 하드웨어를 직접 사용할 수 있는 마이크 진열의 시각을 축소하는 방법을 사용했다br/>
광각 렌즈를 사용하여 카메라 이미지의 시각을 확대할 수도 있다.이 경우 더 넓은 시야로 음원을 찾을 수 있어요.br/>
하드웨어 개조, 적당한 광각 렌즈를 끼운 후 기본적으로 일치.렌즈의 질이 좋지 않아 화질이 떨어지고 금이 갔다.pic.twitter.com/OmPgh9pa3p
— AIRPOCKET@rastaman vibration (@AirpocketRobot) December 19, 2020
카메라와 마이크 모듈을 동시에 사용하면 카메라 이미지에 잡음이 많이 발생합니다.카메라의 케이블도 매우 짧은데 회로판 어딘가에 소음이 생길까요?
처리도 무거울 것 같고 측정은 안 했지만 FPS 한 자릿수만 나왔어요.K510의 처리 능력이 몇 배나 향상될 것으로 보여 기대를 모은다p>
이번에는 위에 카메라를 설치하고 아래에 마이크 진열을 배치했습니다.시각축이 다르기 때문에 위아래 방향의 음원 위치는 약간의 편차가 있음을 나타낸다.이번에는 약 1m 전방의 위치가 일치하도록 조정했는데 앞뒤 거리가 멀어지면 편차가 커진다.중심 마이크와 카메라가 가장 가까운 거리로 배치된 마이크 어레이 모듈이 기대됩니다.또는 외곽에 마이크 6개, 내주 3개를 배치하고 중심에 카메라를 배치하여 레이아웃 지름을 살짝 늘리면 해상도도 높아진다(계산 부하를 무시하면)p>
주파수 필터와 버프 조정 등 이루고 싶은 기능도 있지만, 아쉽게도 자체 라이브러리 제작 기술이 없어 여기서 종료p>
이 6+1 마이크 진열은 공식적으로 웹에 있는 정보도 적고 손에 넣기 어려운 인상을 주지만 건드리면 잠재력이 높은 모듈이라고 느낀다.더 많은 분들이 받으실 거라고 생각합니다.p>
Reference
이 문제에 관하여(MaixBit Visualization 완성편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/airpocket/items/7d91976fb3732625bf85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)