如何改进Java边缘检测程序以捕捉图像细微细节?
Java边缘检测程序优化需求
处理前后对比图


实现逻辑与核心代码
我通过对比相邻像素的颜色差值实现边缘检测:当差值足够大时标记为黑色,差值较小时标记为白色。核心代码如下:
public Image edgeDetection() { Color[][] newImg = new Color[image.length][image[0].length]; int x = 2;//higher = less sensitive; lower = more sensitive for (int r = 0; r < image.length; r++) { for (int c = 0; c < image[r].length; c++) { int red = image[r][c].getRed(); int blue = image[r][c].getBlue(); int green = image[r][c].getGreen(); if(r < image.length - 1 && c < image[r].length) { if(image[r][c].getRed() - image[r + 1][c].getRed() > x || image[r][c].getRed() - image[r + 1][c].getRed() < -x ) { if(image[r][c].getBlue() - image[r + 1][c].getBlue() > x || image[r][c].getRed() - image[r + 1][c].getRed() < -x ) { if(image[r][c].getGreen() - image[r + 1][c].getGreen() > x || image[r][c].getRed() - image[r + 1][c].getRed() < -x ) { newImg[r][c] = new Color(0, 0, 0); } else { newImg[r][c] = new Color(255, 255, 255); } } else { newImg[r][c] = new Color(255, 255, 255); } } else { newImg[r][c] = new Color(255, 255, 255); } } else { newImg[r][c] = new Color(red, green, blue); } } } return new Image (newImg); }
当前问题与优化需求
目前阈值x设为2时,黑色像素多于白色;增大x则白色像素占比更高。但无论怎么调整x,都没法让边缘检测结果更贴近原图风格。希望优化程序,让黑白边缘图更清晰,能捕捉图像中的细微细节,如需更多代码可提供。本项目仅为个人兴趣,即便现有代码无法实现也没关系。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

