1. image crop

from PIL import Image

area = (가로시작점, 세로시작점, 가로범위, 세로범위)

crop_image = img.crop(area)

im.save # 저장하기

 

2. opveCV 활용

import cv2

src=cv2.imread("Image/pawns.jpg", cv2.IMREAD_COLOR)

dst=src.copy()

dst=src[100:600, 200:700] %높이, 너비

 

3. trim 활용

import cv2 #cv2 임포트

def im_trim (img): #함수로 만든다

x = 845;

y = 325; #자르고 싶은 지점의 x좌표와 y좌표 지정

w = 180; h = 235; #x로부터 width, y로부터 height를 지정

img_trim = img[y:y+h, x:x+w] #trim한 결과를 img_trim에 담는다

cv2.imwrite('org_trim.jpg',img_trim) #org_trim.jpg 라는 이름으로 저장

return img_trim #필요에 따라 결과물을 리턴

org_image = cv2.imread('test.jpg') #test.jpg 라는 파일을 읽어온다

trim_image = im_trim(org_image) #trim_image 변수에 결과물을 넣는다

출처: https://pikabu.tistory.com/42 [피카부]

 

4. numpy 슬라이싱

import cv2 img = cv2.imread("lenna.png")

crop_img = img[200:400, 100:300] # Crop from x, y, w, h -> 100, 200, 300, 400

# NOTE: its img[y: y + h, x: x + w] and *not* img[x: x + w, y: y + h]

cv2.imshow("cropped", crop_img)

cv2.waitKey(0)

아주 기본적인것으로 1차안이다

계속 업그레이드 하면서 발전시키려고 함

IMU 센서(가속도, 자이로스코프)

Variable Euler Angle Symbol Output Interval (Degrees)
X Roll ϕ −180 ≤ ϕ < 180
Y Pitch θ −90 ≤ θ ≤ 90
Z Yaw ψ −180 ≤ ψ < 180

https://kr.mathworks.com/help/fusion/gs/spatial-representation-coordinate-systems-and-conventions.html?searchHighlight=roll%20pitch&s_tid=doc_srchtitle

 

Orientation, Position, and Coordinate Systems - MATLAB & Simulink - MathWorks 한국

아래 MATLAB 명령에 해당하는 링크를 클릭하셨습니다. 이 명령을 MATLAB 명령 창에 입력해 실행하십시오. 웹 브라우저에서는 MATLAB 명령을 지원하지 않습니다.

kr.mathworks.com

3축 가속도 센서의 출력 값에는 회전성분이 포 함되므로 이를 고려하지 않고 하나의 대표값으로 처리

accmag = sqrt(accx.^2 + accy.^2 + accz.^2); 

roll: y축에 대한 회전 (갸웃갸웃) roll = arctan(y/z)

pitch: x축에 대한 회전 (끄덕끄덕) pitch = arctan(x/z) 

yaw: z축에 대한 회전 (도리도리중력가속도 방향과 일치하는 z축에 대한 회전은 감지할 수 없음

 모든 물체는 지구 중심 방향으로 9.8m/s^2 중력가속도를 받음

스마트폰을 세워놓은 (정지)상태라면 중력가속도의 반대인 y축의 플러스 방향으로 9.8m/s^2의 가속도가 작용함

 

속력 = 거리/시간  -> 각속도 = 회전한 각도/시간

속력 * 시간 = 거리 -> 각속도 * 시간 = 회전한 각도

따라서 단위 시간 동안 측정되는 각속도를 이용하여 회전한 각도를 누적하여 더하게 되면 (적분) 회전한 각도를 구할 수 있게 된다cumtrapz(time,accelerometer)

clc
clear all

%데이터 불러오기
AccData = csvread('Accelerometer.csv',1,1);
GyrData = csvread('Gyroscope.csv',1,2);

%가속도
accx = AccData(:,2);
accy = AccData(:,3);
accz = AccData(:,4);

%acc대표값
accmag = sqrt(accx.^2 + accy.^2 + accz.^2);

%velocity 속도
time = AccData(:,1)./1000;
accelx = (accx-mean(accx))*9.8;
accvel = cumtrapz(time,accelx);
%Displacement(변위) : cumtrapz(time,accvel)

%roll x축 회전
accroll = atan(accy./accz)*180/pi;
%pitch y축 회전
accpitch = -atan(accx./accz)*180/pi;

%STFT변환
spectrogram(accvel,'yaxis');

%자이로스코프
gyrx = GyrData(:,1);
gyry = GyrData(:,2);
gyrz = GyrData(:,3);

%roll x축 회전
gyrroll = atan(gyry./gyrz)*180/pi;
%pitch y축 회전
gyrpitch = -atan(gyrx./gyrz)*180/pi;

%STFT변환
spectrogram(gyrx,'yaxis');

[이미지 전처리]

1. 128*128 사진 두장을 먼저 A, B에 넣기

 trainning 용이면 A, B의 위치가 중요하나 TEST를 하려면 둘다 같은 사진이여도 무방함

2. path/to/data 에 train, test, val 중에 하나로 폴더를 만들어서 이미지 넣기

3.  명령어 작성

sudo python scripts/combine_A_and_B.py --fold_A path/to/data/A --fold_B path/to/data/B --fold_AB path/to/data

이렇게 하면 train, test, val로 합쳐진 이미지가 만들어짐

그렇게 되면 datasets에 폴더를 만들고 만들어진 train, test, val 폴더를 가지고 옮겨줘야함

 

[test 실행하기]

1. cd .. 으로 폴더에서 벗어나 홈으로 나오기

2. 왜인지... 모르겠으나 매번 이작업을 해줘야 함...

luarocks install cutorch

source ~/.bashrc
source ~/.profile

이 두줄로 소스를 다시 공유함

3. 다시 cd ~/pix2pix로 들어가서

env DATA_ROOT=./datasets/wheel name=wheel_generation which_direction=BtoA th train.lua

env DATA_ROOT=./datasets/wheel name=wheel_generation which_direction=BtoA phase=test th test.lua

변경해줘야하는 부분

 

+ Recent posts