1、给出一幅单通道图片。
2、为了节省计算时间,这里把图片缩小。img = ImageResize[img, 30]
3、获取图片数据:data=ImageData[img]
4、把每一个像素的坐标转化为点坐标,并把像素值转化为数据集,得到一个三元数据集:shuju = Flatten[ Table[撑俯擂摔{m, n, data[[m, n]]}, {m, 1, Length[data], 1}, {n, 1, Length[data[[1]]], 1}], 1]
5、画出数据的散点图:sandiantu = ListPlot3D[shuju, PlotRange -> All]
6、用一种方案拟合数据:nihe = Fit[shuju, {1, x, y, x y}, {x, y}]并画出曲面图:Plot3D[nihe, {x, 1, 30}, {y, 1, 30}]与上面的散点图相差甚远。
7、改变拟合方案,增加复杂度:nihe = Fit[ shuju, {x, y, x y巳呀屋饔, x^2, y^2, x^3, y^2, x y^2, x^2 y, x^4, y^4, x y^3荑樊综鲶, x^3 y, x^2 y^2}, {x, y}]看样子,复杂度还是不够。
8、引进正弦函数:nihe = Fit[shuju, Sin /@ {x, y, x y, x^2, y^2, x^3, y^2, x y^2, x^2 y}, {x, y}]
9、再增加复杂度:nihe = Fit[shuju, Flatten[{a0 = Flatten[{1, Table[x^m y^n, {m, 1, 9, 1}, {n, 1, 9, 1}]}], Sin /@ a0}], {x, y}]
10、出图效果。
11、用这个拟合出来的曲面,来还原原来的img:Image[Table[nihe, {x, 1, 30, 1}, {y, 1, 30, 1}]]把图片放大到500像素,结果得到下图,与原图相差太远。