파이썬으로 이미지 테두리 1

하고 싶은 일과 계기


  • 기계 학습의 데이터 세트 만들기에 윤곽을 잡을 기회가 많지만 그것을 가능한 한 자동화하고 싶다.
  • openCV, numpy, matplotlib 학습

  • 밀리오타 성분 강화의 주가 어뢰의 유도법(웨이크 호밍)을 알았기 때문에 그것을 사용하고 싶었다. 여러가지 괴롭혀가는 사이에 웨이크 호밍 관계 없게 되어 버렸다.

  • 뭐, 그런 이렇게 여러가지 해본 것을 비망록을 겸해 정리해 보겠습니다.

    환경


  • 우분투 18.04 LTS
  • Anaconda 1.7.2
  • 파이썬 3.7.3
  • openCV 3.4.2
  • numpy 1.16.2
  • matplotlib 3.03
  • Jupyter Notebook

  • 전제가 되는 지식


  • 파이썬과 각 라이브러리를 조작하는 방법
  • 극좌표 수학


  • 테스트용 이미지





    우선 화상 처리를 씹으면 RGB 화상에서도 할 수 있다고 생각했으므로 우선은 바이너리 화상으로.
    안이 빠져 있거나 해서 복잡한 도형의 가장자리를 취하는데 도전.

    코드



    Github Jupyter Notebook

    기본 정책


  • 경계를 취하고 싶은 물체의 내부에 점을 친다
  • 그 점으로부터 밖으로 향해 선을 그려, 그 선상의 어디에서 색이 바뀌는지를 조사한다.
  • 그 선을 360도 회전시켜 경계를 얻는다.

  • 간단한 이미지로 이런 느낌



    ↓ 검출 대상

    검출 결과

    대체로 잡히고 있다.

    다만, 점의 위치에 따라서는 선의 그림자가 되어 이런 느낌이 된다.


    서두의 그 이미지가 상당히 어려운 과제이다, 라고 하는 것은 이해해 주었으면 하는 곳.

    테스트용 이미지의 검출 결과









    점이 하나에서는 어디에 있어서도 그림자가 생기고, 보이지 않는 곳이 생긴다.

    점이 복수 있으면 그림자의 문제는 경감될 것.





    너무 했던 w

    요약



    외부의 테두리는 대체로 잡혀 있다.
    그래도 내부 영역에서 잡히지 않는 곳이 있고, 요 개선. 하지만 이 정도면 페지에 곡선으로 테두리하는 것은 어렵지 않다고 생각한다.

    이번에는 무작위로 점을 쳤기 때문에 낭비가 너무 많았지만, 적절하게 점을 움직여 최소 점의 수로 가장자리를 잡는 것도 재미있을 것 같다. 강화 학습이나 사용해서 할 수 없을까. 다음번 이후의 과제로 합니다.

    좋은 웹페이지 즐겨찾기