【问题标题】:Edge detection on monochrome pictures - Java单色图片的边缘检测 - Java
【发布时间】:2014-12-21 22:02:51
【问题描述】:

上周五,我有个可笑的疯狂线性代数教授,他要求我们用 Java 开发一个程序,该程序可以加载单色图片,然后对其应用边缘检测过滤器。 问题是我班上没有人知道怎么做,我只有一周的时间来完成它。 由于我仍在努力解决它并从头开始,有没有人准备好寄给我的东西,以便我可以研究它并节省我的学期? 任何努力都将不胜感激。

【问题讨论】:

    标签: java image-processing filter edge-detection


    【解决方案1】:

    这是您可以采用的一种非常基本的方法:

    1) 什么是单色图像的边缘?可以说这是一个陡峭的强度梯度。如果你从黑色变为白色,那就是边缘,反之亦然。

    2) 基于此思想的一个非常简单的过滤操作是 Sobel 算子。在此处阅读:Wikipedia

    3) 您会偶然发现 2 个您可能不熟悉的术语:内核和卷积。内核基本上是一个在每个像素上移动的窗口,对像素的环境执行操作。对于 Sobel 3x3 内核,您可以根据像素的直接邻居为过滤后的图像分配一个新值。卷积运算可以被认为是 - 除其他外 - 一个将内核移动到图像中每个像素的操作(注意:这是一个让您入门的严重过度简化并且在技术上不正确。但是,它应该给您正确的想法)

    4) 现在,将 Sobel 内核应用于 BufferedImage 的最简单方法是使用 ConvolveOp 类。它是一个预构建的 Java 类,它采用内核,将其应用于给定图像并返回过滤后的图像。但是,如果这是针对类的,您可能需要自己实现。

    【讨论】:

    • 谢谢!它似乎非常有用,但我的 Java 知识仍然非常基础(刚被介绍给 OOP,所以我无法真正实现该类并使其工作。只是想知道,你有没有准备好任何东西,所以我可以运行它保存这个作业?不幸的是,我一点也不知道该怎么做。
    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2015-08-09
    • 2020-10-03
    相关资源
    最近更新 更多