我用一个移动的相机拍了两张照片。我试着从同一条极线上取它们。


然后在Matlab中计算视差。
I1 = imread('4.jpg'); %right image
I2 = imread('3.jpg'); %left image
figure
imshow(stereoAnaglyph(I1,I2));
title('Red-cyan composite view of the stereo images');
disparityRange = [-6 26];
disparityMap = disparity(rgb2gray(I1),rgb2gray(I2),'DisparityRange',disparityRange);
figure
imshow(disparityMap,disparityRange);
title('Disparity Map');
colormap(gca,jet)
colorbar我的输出由许多噪声组成。当我尝试计算筑波左右图像时,它显示了一个完美而平滑的视差图。为什么会发生这种情况?我错过了什么重要的步骤吗?视差范围会影响吗?

发布于 2018-03-13 23:30:28
如果您能发布已实现的disparity函数,将会有所帮助。我建议传递一个正数的视差值e.g. 59,你可以尝试以下方法:
function disparity_map = disparity(I1, I2, disp_value)
shiftedWin = 5 %any odd number
windowSize = (shiftedWin-1)/2;
lImage = im2double(I1)
rImage = im2double(I2)
disp2 = uint8(imread(I1));
[lRow , lCol] = size(lImage);
DispImg = zeros(lRow,lCol);
for i = windowSize+1 :1: lRow-windowSize
for j = windowSize+1 :1: lCol-windowSize-disp_value
previousScore = 9999;
bestDisparity = 0;
lReg = lImage(i-windowSize:i+windowSize,j-windowSize:j+windowSize);
for cDisparity = 1:disp_value
rReg = rImage(i-windowSize:i+windowSize,j+cDisparity-windowSize:j+windowSize+cDisparity); %% correlated shifted window
%%SAD method%%
tempScore = abs(rReg - lReg);
curScore = sum(tempScore(:));
%lineSums = [lineSums, corrScore];
if (previousScore > curScore)
previousScore = curScore;
bestDisparity = cDisparity;
end
end
DispImg(i,j) = bestDisparity;
end
end
ilumImg = DispImg *4;
imagesc(ilumImg)
colorbar
diffImg = imabsdiff(uint8(ilumImg),disp2);
figure
imshow(diffImg,[]) https://stackoverflow.com/questions/49252536
复制相似问题