0

更新:没关系!我想到了。我必须使用image-ref. 不过感谢您的帮助!(在2013-04-17的评论中说OP )。


因此,我必须使用以下方法创建一个函数来查找像素的能量:

给定一张图像,我们首先计算每个像素的“能量”,它衡量该像素从周围环境中突出的程度,并让我们大致了解其重要性。

要计算由像素 A 到 I 包围的像素 E 的能量,

    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))))))
4

0 回答 0