我正在使用Processing编程语言,尝试从两张校准过的图像计算视差(disparity),为此需要从左侧图片中获取每个像素,并在右侧图像中搜索一行找到与之相似的像素。这两张图片的尺寸都是640x480。
我希望在draw()函数中执行disparityImage(PImage imgL, PImage imgR),但这个函数运行起来太慢了,需要1-2秒才能执行完毕。但如果我注释掉if代码块里的“minD=d; rightX=xr;”那几行代码,该函数只需要3-5毫秒就能执行完毕。我不明白问题出在哪里,已经试了很多小时也没有结果。
我希望在draw()函数中执行disparityImage(PImage imgL, PImage imgR),但这个函数运行起来太慢了,需要1-2秒才能执行完毕。但如果我注释掉if代码块里的“minD=d; rightX=xr;”那几行代码,该函数只需要3-5毫秒就能执行完毕。我不明白问题出在哪里,已经试了很多小时也没有结果。
void depthImage(PImage imgL, PImage imgR) {
for (int x=0; x<imgL.width; x=x+1) {
for (int y=0; y<imgL.height; y=y+1) {
color imgleft=imgL.get(x,y);
float r1=red(imgleft);
float g1=green(imgleft);
float b1=blue(imgleft);
float minD=Integer.MAX_VALUE;
int rightX=0;
for (int xr=0; xr<imgR.width; xr++) {
color imgright=imgR.get(x,y);
float r2=red(imgright);
float g2=green(imgright);
float b2=blue(imgright);
float d=dist(r1, g1, b1, r2, g2, b2);
if (d<minD) {
minD=d;
rightX=xr;
}
}
}
}
}