처리 : Edge Detecting Python Opencv를 이용한 영상

사용중인 라즈베리 파이가 3이었으므로 연산속도를 좀더 빠르게 할 필요가 있었다. 연산속도를 빠르게 하기 위한 영상처리방법. 나의 목표는 자율주행중의 차선검출이었기 때문에, 거기에 맞추어 작성했다.일단 화면을 가져와야겠다.우선 해상도를 낮춘다. 나팔의 연산속도가 한계가 있기 때문에 480*640과 같이 꽤 큰 영상은 딜레이가 너무 많이 걸린다. 0.51초 딜레이라면 고려할 만하지만 3초 딜레이 이상은 말도 안 된다. 이건 그냥 못 써. 어쨌든, 해상도를 크게 내리면 오히려 노이즈가 조금 무시되어 문제 없기 때문에, 0.2배로 해 96*128로 했다. 사실 처음에는 25배로 해서 120*160으로 했는데 더 줄였다고 대수롭지 않게 생각하고 줄였다.둘째는 흑백 처리를 한다. 단지 차선을 잡는 것 뿐이라면, 연산 속도를 빠르게 하기 위해서 1 비트의 흑백으로 하는 편이 좋다. 그리고 블러 처리를 한다. 가우시안러는 연산이 많이 들어가므로 해상도를 축소하여 실시한다. 흑백 처리는 연산을 많이 하지 않지만, 연산은 적을수록 좋기 때문에 마찬가지로 해상도 조절 후에 실시하는 것이 바람직하다. 가우시암블러의 연산을 줄이기 위해서는 블록은 크게 억제하고 연산 정도는 3으로 하면 충분하다고 생각한다. 블록은 한 번에 얼마나 큰 블록을 갖는가를 의미하는데, 홀수로 갖는 것이 바람직하다. 짝수로 딴 적은 없지만 짝수로 따면 마지막 부분이 남는다고 한다.세 번째는 엣지 디텍팅을 한다. 나는 Canny를 모두 잘 사용하는 것 같았는데 구글링 결과 중에 Sobel 함수를 사용하는 것이 있어서 바로 사용했다. 좀 더 쉽고 내가 무슨 키워드를 사용하는지 이해할 수 있다.나는 sobelx도 sobely도 1.0의 값을 준 탓에 y축 엣지는 하나도 검출할 수 없는 큰 실수를 저질렀다.앞으로는 이 값을 가중치로 맞출 수 있다.그다음에 마스킹을 할 거예요 난 100에서 255까지 화이트 처리했어. 솔직히 더 엄격하게 잡으려면 못할 건 아닌데 그냥 넓게 잡았을 뿐이야. 생각해 보면 이 값을 조금만 고쳤으면 노이즈 제거에 좀 더 신경 쓰지 않아도 될 것 같았다.이렇게 되면 차로의 edge만 벗겨진 영상을 만들 수 있다.자율주행자동차 주행코드를 짜다가 나온 코드 중 일부로 영상처리는 내가 맡았기 때문에 올렸다.간단히 영상연산 속도를 늦추고 가장자리만 꺼내 마스킹하는 코드다.

작고 귀여운 우리의 화면… 참고로 이것은 A4 용지에 금긋기 된 것을 출력한 후에 카메라로 찍은 처리 결과를 나팔에 연결된 모니터로 출력된 화면을 찍은 것이다. 이거 보다가 눈이 빠질 것 같아서 다시 길렀어끝.

error: Content is protected !!