我正在寻找一个具有以下功能的Comerically Opensource的Java库:
转换为灰度
卷积
霍夫变换
最重要的是:轻松将RGB像素数据转换为int / char / short [] [] [3](每个RGB值为1个2D数组)
答案 0 :(得分:1)
- 编辑以回应评论 -
虽然您可能了解信号处理,但是对图像进行信号处理的应用程序或图像处理是您应该注意的事项您打算以非浪费(重新发明轮子)的方式利用信号处理图像。
“从头开始编写”,使用2D API在大约4行中执行灰度色彩空间转换。付不是太沉重的代价。来自第175页。
public static Color coverToGrayscale(Color color) {
ColorSpace graySpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
float[] gray = color.getColorComponents(graySpace, null);
return new Color(graySpace, gray, 1.0f);
}
卷积在第10章中处理。卷积练习演示了第206-208页的3x3模糊内核。该框架可用于任何类型的卷积。
在典型的图像处理库中找不到Hugh变换。查看边缘检测/对象检测库。如果您移植/修改Fernandes / Oliveira样式算法,您甚至可以利用2D API的内核引擎来渲染表示变换结果的图像。
将像素数据作为数组获取是一项奇怪的要求。它已经是数组格式。
同样,我推荐这本书,一周阅读它。如果您尝试使用信号处理的较低级别概念“尝试学习它”,那么它将节省数周的编程时间。也就是说,当你了解内核引擎细节时,你的信号处理知识将在黑桃中得到回报。
- 原帖如下 -
这个问题似乎有两个方面。一个是关于用于低级图像处理的开源Java API,另一个是关于低级图像处理(颜色模型等)的更一般文档。
我建议您获取Jonathan Knudsen的“Java 2D Graphics”副本。当它讨论非Java 2D构造时(示例链接到绘图子系统中的过时方式,并且它们不以线程安全的方式启动窗口),它有点过时了;然而,对于实际的2D图形系统来说,它是一个很好的学习参考,并没有改变。
在本书中,它详细介绍了颜色模型,以及其他低级像素相关项(字体提示,抗锯齿,变换等)。因此,它可以是一个非常有价值的工具。
2D API是Java标准库的一部分。不需要“较低”的图像处理库,但根据您的需要,您可能希望库位于其上方(并简化常见的图像处理任务)。一旦掌握了基元,也许你可以找到一个以前评论过的库,以获得足够的文档来满足你的需求。