gpt4 book ai didi

java - Android 位图缩小

转载 作者:行者123 更新时间:2023-11-30 10:31:30 25 4
gpt4 key购买 nike

如果目标是尽可能保持线条/边缘的质量,那么使用 Java 在 Android 上缩小位图图像的最佳方法是什么?目的是使用这些缩小的图像来训练神经网络。

每个图像将包含一个字符(在本例中为中文)。下图显示了用户绘制的在 View 对象上生成的原始图像。我的目标是将此位图图像缩小到 30 x 30 像素的分辨率。

我目前正在使用位图 createScaledBitmap 方法,但想知道是否有任何算法/方法可以针对这种字符缩小进行优化。

drawView.buildDrawingCache();
Bitmap b = Bitmap.createScaledBitmap(drawView.getDrawingCache(), 30, 30, false);
saveImage(b); // Saves image to disk.
drawView.destroyDrawingCache();

另一个因素可能是线宽和整体图像大小之间的关系。线宽目前为20f。我发现在 30f 时,我开始出现大的黑色团 block ,而在 10f 时,我在缩小时丢失了很多信息。

另一个因素可能是生成的图像大小。但是,如果我变得太大,那么训练网络所需的计算量可能会变得太大。

原始图像。

Original Image

这是处理后的图像 - 看起来还不错,但我担心其他角色,神经网络可能没有足够的变化来学习。

Processed Image

最佳答案

我想到的第一个解决方案是将此图像矢量化,然后重新绘制。您写道图像是由用户绘制的,因此您甚至不需要对图像进行矢量化。您需要做的就是将用户输入保存为点列表并以所需的比例重现(绘制)它。

用户在大小为 100 x 100 px 的 Canvas 上绘制一条从 (10, 10)(20, 10) 的线,将在大小为 30 x 30 px 的缩略图上看到从 (3, 3)(6, 3) 的行。然后,您还可以根据最终图像比例轻松应用线条粗细。

当然,为了更好的性能,您应该生成并缓存一些位图,而不是在用户显示它们时一次又一次地绘制它们。

关于java - Android 位图缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43171501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com