gpt4 book ai didi

java - 计算二值化图像中的对象,坐标超出范围

转载 作者:行者123 更新时间:2023-12-01 13:43:32 24 4
gpt4 key购买 nike

我对这个问题束手无策。

请注意,我是一个真正的新手编码员(尽管我确信您会通过我的代码看到)。

基础知识:

我有一个图像,我想计算其中的对象数量。此实例中的对象只是连接像素(图像已被阈值化并经过二值化和二值腐 eclipse 以到达此阶段,代码不是包括)。

我的问题:

我正在尝试编写一些代码来计算该图像中还剩下多少个对象,在该方法中,我调用另一个方法,该方法旨在通过搜索它们所在的相邻像素来删除已包含的任何对象已附。但是,我当前执行此删除方法会抛出一个错误:“坐标超出范围”。我请求任何帮助来解决此问题。

总体对象计数代码:

      /**
* countObjects in image
*
* @param binary image to count objects in
* @param original image to put labels on
*
* @return labelled original image for graphics overlay
*/
public static BufferedImage countObjects(BufferedImage image, BufferedImage original){
BufferedImage target = copyImage(image);


int rgbBand = 0;
boolean finished = false;
Graphics labelColour = original.getGraphics();
labelColour.setColor(Color.RED);

while(!finished){
finished = false;
for ( int i=0; i<= target.getRaster().getWidth() - 1; i++ ) {
for( int j=0; j< target.getRaster().getHeight() - 1; j++ ) {
int clrz = target.getRaster().getSample(i, j, rgbBand);
if (clrz == 1) {
System.out.println(clrz);
removeObject(i, j, target);
labelColour.drawString( ""+count, i, j);
finished=true;
}
}
}
}

return original;

对象删除代码:

    /**
*
* @param x
* @param y
* @param newImage
*
*/
private static void removeObject( int x, int y, BufferedImage newImage ){
int rgbBand = 0;
int[] zero = new int[] { 0 };
newImage.getRaster().setPixel(x, y, zero);
for (int a = Math.max(0, x - 1); a <= Math.min(x + 1, newImage.getRaster().getWidth()); a++) {
for (int b = Math.max(0, y - 1); b <= Math.min(y + 1, newImage.getRaster().getHeight()); b++) {
int na = a;
int nb = b;
if (newImage.getRaster().getSample(na, nb, rgbBand) == 1) {
removeObject( nc, nd, newImage );
}
}
}
}

在上面的removeObject方法中,我尝试使用递归技术从正在计数的图像中删除像素坐标,一旦它们或相邻像素被标记。

如果其中任何不清楚(并且我知道我的代码中可能有多个令人困惑的部分,请询问,我将进一步解释)。

感谢您的帮助。

最佳答案

我没有足够的声誉来发表评论,因此将我的评论写为答案。你确定你没有弄乱x和y坐标吗?我前段时间也遇到过类似的问题,但我弄乱了图像的高度和宽度。

关于java - 计算二值化图像中的对象,坐标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510112/

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