NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 6
  • 매뉴얼

    NGM 6

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 도구 상자 - 조건 - 색 계열 체크 (Toolbox, Condition, Color range check)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 윈도우 화면에서 하나의 픽셀을 비교할 수 있는 [ 픽셀 체크 ]와 [ 픽셀 서치 ] 그리고, [ 픽셀 멀티 서치 ] 액션이 있습니다. 앞에 나열한 픽셀 조건들은 하나의 픽셀 색을 감지할 수 있습니다. 하지만, 3D 게임처럼 어떤 색상 계열에서 밝아졌다가 어두워졌다가 하면서 변화하는 색을 감지하기는 어렵습니다. 그래서, 특정 위치의 픽셀 값을 범위로 찾을 수 있는 액션이 필요합니다. 색 계열 체크 액션을 사용하면 특정 색상의 계열을 쉽게 찾을 수 있습니다. 테스트를 위해 엔지엠 매크로를 실행하고, 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    테스트를 위해 그림판 2개를 실행하고 각각 오랜지색 점과 다크블루색 점을 각각 찍어 두었습니다.

    bVkrijL.png

     

     

    도구 상자의 조건 카테고리에 있는 색 계열 체크 액션을 스크립트에 추가하세요. 그리고, 인식할 위치를 마우스 좌표로 선택하고 실행하면 좌표 색을 알 수 있습니다.

    u7KXcks.png

     

     

    그리판 좌측의 오랜지색의 픽셀 값은 "255 127 39"입니다. 각각의 3자리 숫자는 RGB를 나타냅니다. 빛의 3원색이라고 부르는데요. 이 값을 알아야 어느정도 계산해서 범위(Range)를 설정할 수 있습니다. 빛의 3원색에 대한 자료는 직접 찾아보시면 좋을거 같습니다. 우선, 컴퓨터는 각각의 빛을 0부터 255까지 256비트로 표현할 수 있습니다. RGB는 Red, Green, Blue입니다. RGB가 전부 0이면 흰색이고, 전부 255면 검은색입니다. 빨간색, 녹색, 파란색 물감을 생각해보면 이해하기 쉽습니다. 여기서 문제! 그렇다면 노란색을 나타내려면 어떻게 해야 할까요? 그렇습니다. 255, 255, 0이면 노란색이 됩니다.

     

    아래와 같이 RGB 값을 0~255, 0~255, 0~99로 설정하세요. RG가 0부터 255라서 붉은색과 녹색 그리고, 노란색까지 매치가 됩니다. 약간의 파란색이 섞여 있어도 매치가 되겠죠? 그리고, 픽셀 좌표는 좌측의 그림판에 있는 오랜지색 점의 좌표입니다. 이곳의 색상 값을 인식해야 하니까요.

    q8SV7Jz.png

     

     

    매크로를 실행 해보면 정상적으로 매치가 되는걸 확인할 수 있습니다. 결과 값을 보면 255, 127, 39입니다. 위에서 설정한 범위에 모두 포함됩니다. 여기서 좀 더 밝거나 어둡게 변화하는 픽셀의 값들도 전부 매치가 될겁니다. 이 부분은 직접 사용하는 프로그램에서 테스트하면서 적절하게 값을 입력해야 합니다.

    RtATqxv.png

     

     

    이번에는 우측의 파란색 계열의 점을 픽셀 좌표로 설정하고 다시 실행 해보세요. 좌표 색이 67, 72, 204입니다. RG는 범위안에 있지만, B는 99보다 크므로 결과는 False입니다. 아마 더 어두운 파란색 계열이면 매치 결과가 True가 될겁니다.

    qisxehk.png

     

     

    퍼포먼스가 중요한 작업이라면 이미지 매치에서 성능 향상 옵션을 사용할겁니다. 이 옵션을 사용하면 Normal 기본으로 사용할 때보다 약 두배 이상 성능이 향상됩니다. 하지만, 컴퓨터의 성능 향상이 아닌 프로그래밍적으로 계산 값을 줄이는 거라서 오차가 발생할 수 있습니다. 예를 들어서 픽셀의 색상은 RGB가 각각 256개를 가집니다. 모니터의 해상도가 1920x1080이라고 하면 컴퓨터는 1,642,291,200번의 비교를 수행해야 합니다. 이 연산을 0.2초 정도에 해내는거죠. 성능 향상 옵션은 저 색상의 범위를 줄이는 방식입니다. 비슷한 색들을 뭉게서 합쳐주기 때문에 연산 속도가 반으로 줄어듭니다. 그렇다보니 몇몇 색상들은 같다고 인식하게 됩니다. 여기서 알고리즘 적으로 한번 더 색들을 뭉게서 합쳐주기 때문에 색상 보다는 색 차이가 많이 나는 경계를 기준으로 비교합니다.

    npmuGlL.png

     

     

    이미지 매치의 성능 향상 옵션을 사용하면 Normal보다 약 두배 빨라집니다. Normal에서 0.2초 걸리던 작업이 0.1초에 끝납니다. 이미지를 더 빨리 찾을 수 있다는건 아주 큰 메리트입니다. 하지만, 정확도도 중요하겠죠? 그래서, 이미지 매치의 성능 향상 옵션 상태에서 찾은 이미지 좌표를 색 게열 체크에서 받아와서 처리하면 좀 더 빠르게 이미지 조건을 처리할 수 있습니다. 색 계열 체크 액션의 속도는 위 이미지의 아웃풋에서 알 수 있듯이 0.03초입니다. 픽셀 1개를 비교하기 때문에 매우 빠른 속도로 처리할 수 있습니다. 그리고, 색 계열의 Range 안에 들어가는지만 체크하므로 픽셀 체크보다 더 빠른 성능을 보여줍니다. 아래 사이트에서 RGB 색상표를 시각적으로 확인하면서 각각의 값을 찾아낼 수 있습니다. 이 사이트를 참고하면 좀 더 쉽게 색 계열 범위를 알 수 있습니다.

    [ RGB 색상표 테스트 ]

     

    각각의 RGB는 범위뿐만 아니라 조건으로 처리할수도 있습니다. 아래 그림에서 색 B에 100을 입력하고 색 B 범위에 255를 입력하면 블루 계열이 100부터 255까지 매치가 됩니다. 하지만, 100일 때만 매치하고 싶을수도 있습니다. 이런 경우에는 색 B에 숫자를 입력하고, 색 B 조건에서 같다, 크다, 작다등등... 조건으로 처리해도 됩니다.

    05DUXbF.png

     

     

    되돌아가기 사용을 True로 설정하면 조건을 처리한 후 다시 원래 위치로 되돌아 옵니다. 이 기능은 [ 액션 되돌아가기 ]와 [ 액션 복귀 ]를 조건에서 편하게 사용할 수 있도록 해줍니다. 되돌아가기 사용 옵션에 대한 예제는 아래 글을 참고하시면 됩니다.

    조건의 되돌아가기 옵션 예제 ]

     

    조건 지연 실행에 대한 학습 에제는 아래 글을 참고하세요. 이 속성은 조건 카테고리에 있는 액션에만 존재합니다.

    조건의 조건 지연 실행 옵션 예제 ]

     

    궁금한 사항은 [ 고객 서비스 ]방에 문의 해주세요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.