让我解释一下我的问题。我有一个服务,做一些数学计算(非常非常困难)。这是某种统计计算。此服务返回布尔值的二维数组(boolean [] [] 400x400)。后我是创建对应于该阵列的图像:如何平滑或处理表示闭合线的图像像素?
BufferedImage im = new BufferedImage(area.length, area.length, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = in.createGraphics();
g2.setColor(Color.BLACK);
for (int i = 0; i < area.length; i++) {
for (int j = 0; j < area.length; j++) {
if (area[ i ][ j ]) {
g2.fillRect(j, i, 1, 1);
}
}
}
ImageIO.write(im, someformat, somefile);
的代码相当简单。结果我创建Pic1(见附件)。例如黄色边框以及黄色点(图像像素)。 此外,我想告诉你布尔数组的某些内容(这是唯一的例子,我将打印为1 true和false为0):
{ 0,.0,............. .... ............0 }
.................... ...
{ 0,0,0,0,0,1,1,.... .... ............0 }
{ 0,0,0,1,1,0,1,.... .... ............0 }
{ 0,0,1,1,0,0,0,1,1, .... ............0 }
{ 0,0,0,1,0,0,0,1,0, .... ............0 }
..................................
{ 0,.0,............. .... ............0 }
因此,作为一个结果,我有我说PIC1。是的,我知道这张照片看起来很奇怪。在实践中,它可以是任何形状,但它总是会被关闭。这张图片看起来非常难看,而我想把它画成一些宽度不大的曲线。我试图在Pic2上展示它(是的......这也是丑陋的......我的绘画很糟糕)。
我在图像处理方面的技能和知识很糟糕,我肯定需要帮助和澄清。可能是不可能完全使用Java来实现我的目标。我不知道。可能有一些图书馆或其他可以帮助我的东西。
我会为任何答复和帮助提供补充,谢谢。
您可以考虑在[I,J]“1”为点(x = j的,Y = i)并使用一系列Bezier曲线或样条插补它。 – loginpassword
按下“-1”很容易,但是您可以通过示例稍微扩展您的答案吗?我给出数组的例子,因为围绕具有值“1”的点也有值为“1”的点,问题也是我不知道顺序。这些点。在这个数组中,我不知道选中的[i,j]点后面的点。我正在尝试解决我的问题,但不会提高我的评分。 –