Image processing (方案)如何计算像素的能量?(接缝雕刻)
更新:无需担心!我想出来了。我必须使用Image processing (方案)如何计算像素的能量?(接缝雕刻),image-processing,scheme,pixel,file-access,seam-carving,Image Processing,Scheme,Pixel,File Access,Seam Carving,更新:无需担心!我想出来了。我必须使用图像参考。谢谢你的帮助!(OP在2013年4月17日表示) 所以,我必须做一个函数,用这个函数找到像素的能量: 给定一幅图像,我们首先计算每个像素的“能量”,它测量该像素在其周围环境中的突出程度,并让我们大致了解其重要性 要计算由像素a到I包围的像素E的能量 使用公式 在哪里 每个大写字母表示对应像素的亮度(红色、蓝色和绿色值之和) 要计算边缘像素的能量,应假设图像由1像素宽的黑色像素边界(亮度为0)包围 现在,我的函数查找像素周围像素的位置。我不明白的是
图像参考
。谢谢你的帮助!(OP在2013年4月17日表示)
所以,我必须做一个函数,用这个函数找到像素的能量: 给定一幅图像,我们首先计算每个像素的“能量”,它测量该像素在其周围环境中的突出程度,并让我们大致了解其重要性 要计算由像素a到I包围的像素E的能量 使用公式 在哪里 每个大写字母表示对应像素的亮度(红色、蓝色和绿色值之和) 要计算边缘像素的能量,应假设图像由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))))))
我不太明白你的问题。如果我只有位置=>你不能得到给定位置的像素的RVB值并将其输入亮度函数吗?图像是如何存储的?@Jean我该怎么做?我从来没有用scheme编程过,所以我不知道。也许我们能找到答案。如何加载图像文件?它是如何存储在内存中的?你有什么图像(.bmp、.jpg等)?没关系!我想出来了。我必须使用image-ref。谢谢你的帮助!
energy(E) = sqrt(xenergy^2 + yenergy^2)
xenergy = A + 2D + G - C - 2F - I
yenergy = A + 2B + C - G - 2H - I
(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))))))