Фазовый сдвиг полос - PullRequest
       120

Фазовый сдвиг полос

0 голосов
/ 31 января 2019

Я создал шаблон с бахромой для теста со структурированным освещением, подобный этому (Двоичный шаблон) , используя фрагмент кода для генерации сигнала ШИМ в python

import numpy as np
import cv2

amp=float(input('fringe amplitude:'))
t=float(input('time period:'))
c=int(input('cycle time:'))
dt=1
xpix=np.arange(0,c*t,dt)
ypix=np.zeros_like(xpix)
n=t/dt

i=0
while i*dt< c*t:
    if (i % n)/n < amp/100.0:
        ypix[i]=1
    i=i+1

A =255*np.tile(ypix,(1140,1))
print(A)
i= input('enter value:')
cv2.imwrite('C:\\Users\\newimg'+str(i)+'.bmp', A)

Я хочусдвиг фазы на 1/3 периода времени каждого сигнала, чтобы создать два новых сдвинутых изображения.Есть ли способ отредактировать этот код, чтобы сделать это, или лучше / проще использовать?

1 Ответ

0 голосов
/ 31 января 2019

Некоторые вещи в вашем коде мне не совсем понятны, однако, если вы хотите сместить шаблон, вы должны просто добавить переменную, определяющую, насколько его сместить, и затем сместить вашу ось на эту переменную, например так:

import numpy as np
import cv2

amp=float(input('fringe amplitude:'))
t=float(input('time period:'))
c=int(input('cycle time:'))

# this is the shift variable
shift = int(input('shift amount'))

dt=1
xpix=np.arange(0,c*t,dt)
ypix=np.zeros_like(xpix)
n=t/dt

i=0
while i*dt< c*t:
    # Here we offset i by the shift variable.
    # Because we are summing, we are moving everything left by $shift pixels
    # If you want to move right simply insert a negative value in shift
    if ((i + shift) % n)/n < amp/100.0:
        ypix[i]=1
    i=i+1

A =255*np.tile(ypix,(1140,1))
print(A)
i= input('enter value:')
cv2.imwrite('newimg'+str(i)+'.bmp', A)
...