diff options
| author | Nick White <git@njw.name> | 2020-07-22 17:07:45 +0100 | 
|---|---|---|
| committer | Nick White <git@njw.name> | 2020-07-22 17:07:45 +0100 | 
| commit | 43d0e6116e25578d1b76cf6ed8c93cc73f663d05 (patch) | |
| tree | 2383d4aa2431d3e5993ff7ad9aac8db91621b9a9 | |
| parent | f433a5c8405db5846f62fac13bd9343e180d8fd0 (diff) | |
Implement image.Image interface
| -rw-r--r-- | integralimg.go | 28 | 
1 files changed, 28 insertions, 0 deletions
diff --git a/integralimg.go b/integralimg.go index d9bd38f..17d3332 100644 --- a/integralimg.go +++ b/integralimg.go @@ -10,12 +10,40 @@ package integralimg  import (  	"image" +	"image/color"  	"math"  )  // I is the Integral Image  type I [][]uint64 +func (i I) ColorModel() color.Model { return color.GrayModel } + +func (i I) Bounds() image.Rectangle { +	return image.Rectangle {image.Point{0, 0}, image.Point{len(i[0]), len(i)}} +} + +func (i I) At(x, y int) color.Color { +	if !(image.Point{x, y}.In(i.Bounds())) { +		return color.Gray{} +	} + +	var oldx, oldy, oldxy uint64 +	oldx, oldy, oldxy = 0, 0, 0 +	if x > 0 { +		oldx = i[y][x-1] +	} +	if y > 0 { +		oldy = i[y-1][x] +	} +	if x > 0 && y > 0 { +		oldxy = i[y-1][x-1] +	} +	orig := i[y][x] + oldxy - oldx - oldy + +	return color.Gray{uint8(orig)} +} +  // Sq contains an Integral Image and its Square  type WithSq struct {  	Img I  | 
