관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

비전 에이전트 9 - 연습문제 풀기 3 : 문제 5~6번 본문

인공지능/컴퓨터 비전

비전 에이전트 9 - 연습문제 풀기 3 : 문제 5~6번

huenuri 2024. 11. 12. 18:01

이제 마지막 남은 두 문제를 풀어보려고 한다.


 

 

 

연습문제 풀기 세 번째

 

문제 5번

프로그램 6-5에서 봉합한 영상을 보면 가장자리에 검은색 영역이 나타나는 현상을 확인할 수 있었다. 검은색 영역을 제외하고 오려내는 <검은색 영역 제거> 버튼을 추가하시오.

 

 


 

 

 

코드 실행해 보기

 

 

 

 

 

c를 눌러 캡처한 후에 파노라마 영상을 제작했는데 실패했다. 그리고 새벽에 했던 것처럼 다시 시도하기로 했다. 이번에도 재질이 극명하게 다른 류의 사진이라서 그런 것 같다.


 

 

 

 

 

 

 

 

 

 

 

 

총 4장의 영상을 캡처했다.

 

 

 

 

너무 길어서 뒷부분이 잘렸지만 파노라마 영상이 잘 출력되었다. 그리고 검은색 영역을 제거하는 버튼을 클릭했다.

 

 

 

 

검은색 영역을 제거하고 이어서 봉합을 해주었다.

 

 

 

 

근데 영상을 보니 전보다 더 거무스름해 보인다.

 

 

 

 

 

이건 전체 파노라마 이미지이다.

 

 

 

 

 

코드를 몇 번 수정해서 실행해 보았으나 파노라마 영상을 제작하는데 시간이 너무 많이 걸리고 먹통이 될 때가 많아 그냥 여기까지만 진행하기로 했다. 다음에 기회가 되면 다시 풀어볼 수 있을 것 같다.


 

 

 

 

문제 6번

아래 사진에서 볼 수 있듯이 카메라의 셔터 속도보다 빠르게 움직이는 물체에는 모션 블러 효과가 나타난다. 프로그램 6-6에 모션 블러 기능을 추가하시오.

 

 


 

 

 

(1) 모션 블러 효과 만들기

 

모션 블러 효과를 적용하기 위해 수평 방향으로 흐르는 모션 블러 필터를 만들어 프로그램에 추가해 줄 수 있다. 아래는 프로그램 6-6에 모션 블러 효과를 추가한 코드이다.

 

 

코드 설명

  • motionBlurFunction: 20개의 동일한 값을 가진 1x20 크기의 필터 커널을 생성하여 수평 방향으로 모션 블러를 적용한다.
  • 저장 기능: 콤보박스에 모션 블러 항목이 추가되어 있으며, 사용자가 선택할 수 있다.

이 코드를 실행하면 모션 블러 효과가 추가된 이미지를 화면에 표시하고, 콤보박스를 통해 다른 효과와 함께 저장할 수 있다.


 

 

 

코드 실행하기

 

 

 

 

 

 

원본 이미지는 이것으로 선택했다.

 

 

 

 

모션 블러 효과가 잘 적용되어 움직이는 것처럼 보이는 사진이 되었다.


 

 

 

 

 

(2) 콤보박스를 이용하여 '약하게', '적절하게', '강하게'를 선택할 수 있게 확장하기

 

모션 블러 효과를 약하게, 적절하게, 강하게로 선택할 수 있도록 콤보박스에 옵션을 추가하고, 그에 따라 모션 블러의 강도를 조절할 수 있게 코드를 수정하겠다.

 

 

코드 설명

  • self.blurStrengthCombo: 모션 블러 강도를 설정할 수 있는 콤보박스로, 약하게, 적절하게, 강하게 옵션이 있다.
  • motionBlurFunction: 선택한 강도에 따라 kernel_size 값을 10, 20, 30으로 설정하여 블러 강도를 조절한다.
    • 약하게: 10, 적절하게: 20, 강하게: 30 크기의 필터를 사용하여 모션 블러를 적용한다.

이제 프로그램에서 모션 블러 강도를 조절할 수 있으며, 모션 블러 버튼을 누를 때 blurStrengthCombo에서 선택한 강도에 맞게 효과가 적용된다.


 

 

 

코드 실행하기

 

 

 

다시 이 사진을 열었다.


 

 

1. 모션 블러 약하게

 

모션 블러가 약하게 적용된 것이다.

 

 

 

 

2. 적절하게

 

적절하게는 앞의 문제를 풀었을 때 나온 결과와 비슷하다.

 

 

 

3. 강하게

 

강하게 하자 형제를 잘 알아보기 힘들다.

 


 

 

 

학습을 마치고

이렇게 오늘 3시간 반이  다 되는 시간 동안 연습문제를 모두 풀어보았다. 연습문제를 풀면서 이론 학습을 할 때는 대충 학습하거나 이해하지 못했던 내용도 어느 정도 파악할 수 있었다.

보통 연습문제를 푸는데 개념 학습을 하는 데 걸리는 시간만큼 투자하는 편이다. 대부분 4시간 이상이 걸리는데 그럼에도 이 시간이 별로 아깝지 않고 의미 있다고 여기기로 했다. 처음 컴퓨터 비전 공부를 시작할 때는 일주일 안에 빠르게 학습하고 다음 과목으로 넘어가고 싶었다.

 

공부할 과목들이 산더미처럼 많기 때문이다. 하지만 공부를 하면서 컴퓨터 비전에 대해 더 알고 싶었고, 전보다 진지하게 임하게 되었다. 이다음 단원부터는 딥러닝 컴퓨터 비전으로 지금보다 훨씬 더 어려운 내용이다. 조금 더 천천히 학습하고 다 하지 못한 공부는 다음 단위 기간에 이어서 진행할 것이다.