2013-10-20 4 views
0

첨부 파일에 int로 여러 점이있는 이미지가 있다고 가정합니다. 스크립트가이 점을 찾고 나에게 배열을 줄 수있는 방법이 있습니까?레이어에 포인트를 찾는 방법은 무엇입니까?

이미지 처리를 통해이 작업을 수행 할 수 있다고 생각하지만이 작업을 수행 할 스크립트가 있어야합니다. attached file

답변

0

나는 Script-Fu에서 이것을 수행하는 것이 좋습니다. Script-Fu로 픽셀을 반복하는 것은 모든 픽셀에 대해 배열과리스트를 할당하는 오버 헤드와 을 포함하기 때문에 매우 느립니다.

나는 빨리이 작업을 수행하는 스크립트를 작성했습니다,하지만 너무 느립니다 - 당신의 이미지를 내 컴퓨터에 5 분를 취합니다

; Returns an array of cons pairs 
(define (count-points image) 
    (let* ((duplicate (car (gimp-image-duplicate image))) 
    (layer (car (gimp-image-flatten duplicate))) 
    (width (car (gimp-image-width duplicate))) 
    (heigth (car (gimp-image-height duplicate)))) 
    (display (gimp-drawable-is-gray layer)) (newline) 
    (if (not (equal? (car (gimp-drawable-is-gray layer)) 1)) 
     (gimp-image-convert-grayscale duplicate)) 
    (plug-in-blur 0 duplicate layer) 
    (gimp-threshold layer 0 127) 
    (let loop ((x 0) (y 0) (result '())) 
     (if (>= y heigth) 
     result 
     (if (>= x width) 
      (loop 0 (+ y 1) result) 
      (loop (+ x 1) 
      y 
      (let ((vals (cadr (gimp-drawable-get-pixel layer x y)))) 
       (if (< (aref vals 0) 127) 
       result 
       (cons (cons x y) result))))))))) 

;; Call in Script-Fu Console like this (to calculate points 
;; of the last image opened/created): 
;; 
;; (let ((imgs (gimp-image-list))) 
;;  (count-points (vector-ref (cadr imgs) 0))) 

나는 이미지를 (을 흐리게 및 수출 제안 이전에 treschold를 사용하여) PGB/PBM과 같은 벙어리 형식으로 변환 한 다음 C 또는 다른 컴파일 가능한 언어로 외부 프로그램을 사용하여 계산을 수행합니다.

관련 문제