我在写一个自动生成 '一键生成像素画的mcfunction' 的东西
功能是这样的: 读入一个图像文件,读入材质信息(羊毛对应的色号),生成由setblock命令组成的能够产生像素画的mcfunction文件.
思路是这样的: 把图片对应的rgb矩阵读进来,然后对照羊毛的色号,计算在rgb色彩空间上最能代替某一像素色彩的羊毛的id(包括附加值).
我的具体算法是这样的: 首先定义rgb空间上的距离(或者平方距离),羊毛到某一像素点的rgb空间平方距离=(r通道取值之差)^2+(g通道取值之差)^2+(b通道取值之差)^2. 然后读入图片rgb矩阵,对矩阵元素遍历并计算每一个像素点处最佳羊毛id(和此像素点的rgb空间平方距离最小). 遍历的同时选择最佳的羊毛并生成setblock命令写入mcfunction文件. 最后保存并关闭这个mcfunction文件,在游戏中载入并执行这个function就可以了.
问题是生成的像素画和原本的图片相差太大…… 怀疑是选择最佳羊毛的算法有问题…… 希望有人能帮忙改进算法(我知道有现成的像素画生成工具,但不懂它们的原理,如果有此类**开源**的工具的话,也可以推荐一下,多谢)
(之后会贴出对比图和算法源代码(matlab写的))
功能是这样的: 读入一个图像文件,读入材质信息(羊毛对应的色号),生成由setblock命令组成的能够产生像素画的mcfunction文件.
思路是这样的: 把图片对应的rgb矩阵读进来,然后对照羊毛的色号,计算在rgb色彩空间上最能代替某一像素色彩的羊毛的id(包括附加值).
我的具体算法是这样的: 首先定义rgb空间上的距离(或者平方距离),羊毛到某一像素点的rgb空间平方距离=(r通道取值之差)^2+(g通道取值之差)^2+(b通道取值之差)^2. 然后读入图片rgb矩阵,对矩阵元素遍历并计算每一个像素点处最佳羊毛id(和此像素点的rgb空间平方距离最小). 遍历的同时选择最佳的羊毛并生成setblock命令写入mcfunction文件. 最后保存并关闭这个mcfunction文件,在游戏中载入并执行这个function就可以了.
问题是生成的像素画和原本的图片相差太大…… 怀疑是选择最佳羊毛的算法有问题…… 希望有人能帮忙改进算法(我知道有现成的像素画生成工具,但不懂它们的原理,如果有此类**开源**的工具的话,也可以推荐一下,多谢)
(之后会贴出对比图和算法源代码(matlab写的))










害怕到不敢发言










