func main() { // (A file with this name is output by the Go solution to the task // "Bitmap/Read an image through a pipe," but of course any 8-bit // P6 PPM file should work.) b, err := raster.ReadPpmFile("pipein.ppm") if err != nil { fmt.Println(err) return } g := b.Grmap() h := g.Histogram(0) // compute median lb, ub := 0, len(h)-1 var lSum, uSum int for lb <= ub { if lSum+h[lb] < uSum+h[ub] { lSum += h[lb] lb++ } else { uSum += h[ub] ub-- } } // apply threshold and write output file g.Threshold(uint16(ub * math.MaxUint16 / len(h))) err = g.Bitmap().WritePpmFile("threshold.ppm") if err != nil { fmt.Println(err) } }
func main() { // Example file used here is Lenna50.jpg from the task "Percentage // difference between images" converted with with the command // convert Lenna50.jpg -colorspace gray Lenna50.ppm // It shows very obvious compression artifacts when viewed at higher // zoom factors. b, err := raster.ReadPpmFile("Lenna50.ppm") if err != nil { fmt.Println(err) return } g0 = b.Grmap() w, h := g0.Extent() g1 = raster.NewGrmap(w, h) for y := 0; y < h; y++ { for x := 0; x < w; x++ { g1.SetPx(x, y, median(x, y)) } } // side by side comparison with input file shows compression artifacts // greatly smoothed over, although at some loss of contrast. err = g1.Bitmap().WritePpmFile("median.ppm") if err != nil { fmt.Println(err) } }
func main() { b, err := raster.ReadPpmFile("Unfilledcirc.ppm") if err != nil { fmt.Println(err) return } b.Flood(200, 200, raster.Pixel{127, 0, 0}) err = b.WritePpmFile("flood.ppm") if err != nil { fmt.Println(err) return } }
func main() { // (A file with this name is output by the Go solution to the task // "Bitmap/Read an image through a pipe," but of course any 8-bit // P6 PPM file should work.) b, err := raster.ReadPpmFile("pipein.ppm") if err != nil { fmt.Println(err) return } b = b.Grmap().Bitmap() err = b.WritePpmFile("grayscale.ppm") if err != nil { fmt.Println(err) } }
func main() { // Example file used here is Lenna100.jpg from the task "Percentage // difference between images" converted with with the command // convert Lenna100.jpg -colorspace gray Lenna100.ppm b, err := raster.ReadPpmFile("Lenna100.ppm") if err != nil { fmt.Println(err) return } g0 := b.Grmap() g1 := g0.KernelFilter3(blur) err = g1.Bitmap().WritePpmFile("blur.ppm") if err != nil { fmt.Println(err) } }