java bufferedimage byte_使用BufferedImage.TYPE_BYTE_BINARY作为输出进行Sobel边缘检测

该博客讲述了作者在使用Java进行Sobel边缘检测时遇到的问题。他们期望输出图像类型为BufferedImage.TYPE_BYTE_BINARY,但实际结果并非预期,无法正确检测边缘。代码中展示了如何将图像转换为灰度,并应用Sobel算子,但最终的阈值处理可能导致了问题。作者寻求帮助以解决输出图像类型不符合要求的问题。
摘要由CSDN通过智能技术生成

我正在做一个学校作业,我们应该对图像进行索贝尔边缘检测 . 我们应该用sobel核心进行卷积,然后计算每个像素的梯度幅度 . 之后,我们应该使用阈值方法为像素提供值255(白色)或0(黑色),具体取决于阈值 . 边缘检测 must 的输出图像属于 BufferedImage.TYPE_BYTE_BINARY 类型 . 我使用灰度图像作为输入,但结果看起来非常奇怪..它绝对不会检测到边缘 .

我google了一下,设法找到工作代码(here,看到标记的正确答案),但是,这里的输出图像是BufferedImage.TYPE_INT_RGB类型,这是不允许的...在这个问题中,也使用BufferedImage . TYPE.INT.RGB作为边缘检测的输入 .

非常感谢帮助解决这个问题!

Result when I execute the program. The edge detection result is on the far right.

ys9vv.png

What the edge detection result should look like.

jvOan.png

My code:

/**

* turns an image to a grayscale version of the image

*/

public void alterImageGrayScale() throws IOException {

im

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值