Image2Matrix := proc( Img := string # filename of the image ) local A, img, m, n, P, i, j, t; img := ImageTools[Read](Img); P := ImageTools[ToGrayscale](img); t := ArrayDims(P); m, n := op(2,t[1]), op(2,t[2]); A := Matrix(m,n); for i from 1 to m do for j from 1 to n do A[i,j] := P[i,j] end do end do; return A[1..-1,1..-1] end proc;