sig
  type picture = {
    r : Matrix.matrix_int;
    g : Matrix.matrix_int;
    b : Matrix.matrix_int;
  }
  val dimx : Picture.picture -> int
  val dimy : Picture.picture -> int
  val read_pic : string -> Picture.picture
  val fprint_ppm : Format.formatter -> Picture.picture -> unit
  val sprint_ppm : Picture.picture -> string
  val flip : Picture.picture -> Picture.picture
  val brightness : Picture.picture -> Matrix.F.t
  val image : Picture.picture -> int array array
  val monochrome : Matrix.F.t -> Picture.picture
  val black_n_white : Matrix.B.t -> Picture.picture
  val colorful : Matrix.I.t -> Picture.picture
  val convolution : filter:Matrix.F.t -> image:Matrix.F.t -> Matrix.F.t
  val normalize : Matrix.F.t -> Matrix.F.t
  val sobel_x : Matrix.F.t
  val sobel_y : Matrix.F.t
  val scharr_x : Matrix.F.t
  val scharr_y : Matrix.F.t
  val gaussian : Matrix.F.t
  val canny : hi_thr:float -> lo_thr:float -> Picture.picture -> Matrix.B.t
  val super_canny :
    extend:int ->
    hi_thr:float -> lo_thr:float -> Picture.picture -> Matrix.B.t
  val regions : Matrix.B.t -> Matrix.I.t
  val regcolors :
    Picture.picture -> Matrix.I.t -> int array * int array * int array
  val colorcode :
    Matrix.I.t -> int array * int array * int array -> Picture.picture
end