(Схема) Как рассчитать энергию пикселя? (резьба по шву)

обновление: Nevermind! Я понял. Я должен использовать image-ref, Спасибо за вашу помощь, хотя! (сказал ОП в комментариях в 2013-04-17).


Итак, я должен сделать функцию, которая находит энергию пикселя, используя это:

Для данного изображения мы сначала вычисляем "энергию" каждого пикселя, которая измеряет, насколько этот пиксель выделяется из его окружения, и дает нам приблизительное представление о его важности.

Чтобы вычислить энергию пикселя E, окруженного пикселями от A до I,

    A B C
    D E F
    G H I

используйте формулу

    energy(E) = sqrt(xenergy^2 + yenergy^2)

где

    xenergy = A + 2D + G - C - 2F - I
    yenergy = A + 2B + C - G - 2H - I

и каждая заглавная буква представляет яркость (сумму значений красного, синего и зеленого) соответствующего пикселя.

Чтобы вычислить энергию краевых пикселей, вы должны сделать вид, что изображение окружено черной рамкой шириной в 1 пиксель (с яркостью 0).

Прямо сейчас, моя функция находит местоположение пикселей в пикселях. Чего я не понимаю, так это как определить местоположение пикселя и найти его яркость. У меня есть функция яркости, но она принимает цвет, а не местоположение пикселя. Как я могу найти цвет пикселя, если у меня есть только местоположение?

Вот мой код:

(define (brightness c)
 (+ (color-ref c 'red) (color-ref c 'green) (color-ref c 'blue)))

(define (energy img rows cols)
  (let ([a '((add1 rows), (sub1 cols))]
    [b '((add1 rows), (add1 cols))]
    [c '(rows, (sub1 cols))]
    [d '(rows, (add1 cols))]
    [g '((sub1 rows), (sub1 cols))]
    [f '((sub1 rows), (add1 cols))])
  (let ([xenergy (- (+ a (* 2 c) g) (- b (* 2 d) h))]
      [yenergy (- (+ a (* 2 b)) (- d (* 2 h)))])
    (sqrt (+ (xenergy * xenergy) (yenergy * yenergy))))))

0 ответов

Другие вопросы по тегам