Androidの画像で円を見つけるためにハフ変換を使用しています。ある時点で、スタック オーバーフローが発生します。
12-03 16:18:20.999: I/dalvikvm-heap(21563): Grow heap (frag case) to 29.662MB for 2253716-byte allocation
12-03 16:18:21.014: I/dalvikvm(21563): threadid=11: stack overflow on call to Lorg/DTS/boltSizer/ImageProcessing/hystThresh;.hystConnect:VII
12-03 16:18:21.014: I/dalvikvm(21563): method requires 44+20+12=76 bytes, fp is 0x5e949338 (56 left)
12-03 16:18:21.014: I/dalvikvm(21563): expanding stack end (0x5e949300 to 0x5e949000)
エラーがスローされている場所は次のとおりです。
private void hystConnect(int x, int y) {
int value = 0;
for (int x1=x-1;x1<=x+1;x1++) {
for (int y1=y-1;y1<=y+1;y1++) {
if ((x1 < width) & (y1 < height) & (x1 >= 0) & (y1 >= 0) & (x1 != x) & (y1 != y)) {
value = (input[y1*width+x1]) & 0xff;
if (value != 255) {
if (value >= lower) {
input[y1*width+x1] = 0xffffffff;
hystConnect(x1, y1);
ran++;
}
else {
input[y1*width+x1] = 0xff000000;
}
}
}
}
}
}
私はそれが何を意味するかを理解していると思いますが、どうすればこれを回避できますか. 実行中のコードがさらに必要な場合は、質問してください。