电脑
Mathematica
用Mathematica查看图片蓝色区域的颜色参数:{0.`, 0.443076`, 0.74117647`}由此可以看出,这不是确实的蓝色。
把图片转化为图片数据,以便进一步处理:shuju = ImageData[img]
查看图片尺寸:{u, v} = ImageDimensions[img]宽度是500,高度是372。
分别对每一个像素进行甄别,把颜色数据等于{0.`, 0.443076`, 0.74117647`}的,全部换成红色:Table[If[shuju[[m, n, All]] == {0.`, 0.443076`, 0.74117647`}, {1, 0, 0}, shuju[[m, n, All]]], {m, 1, 372, 1}, {n, 1, 500, 1}]这是一组新的图片数据。
把上面的图片数据转化为图片:%//Image
这是怎么回事?为什么还是有大部分区域没有变色?原来,那些蓝色区域的颜色值已经不是{0.`, 0.443076`, 0.74117647`}了。
其实,Mathematica还有一个直接替换颜色的函数:ColorReplace[img, Blue -> Red]好吧,没有任何效果。那是因为那不是真正的蓝色啊。
ColorReplace[img, Blue -> Red, 0.2]效果更明显了,但是还是有瑕疵。
ColorReplace[img, Blue -> Red, 0.3]完全变过来了。
ColorReplace[img, Blue -> Red, 0.45]这就有点过分了。
还有更过分的呢:ColorReplace[img, Blue -> Red, 0.5]
目前看来,最好的效果,就是步骤10里面的图片了。但是,你知道这个的具体算法是什么吗?