【发布时间】:2017-07-31 06:07:40
【问题描述】:
我想使用深度阈值从深度图像中分割手部。我使用了这个链接中的这个 kinect 和跳跃数据集-
http://lttm.dei.unipd.it/downloads/gesture/
我尝试了这两个代码,但在这两种情况下我得到的输出都是全黑图像。原始 .png 图像是
我从数据集中的 1_depth.bin 文件中选择了深度值。
代码 1
I = fopen('D:\dsktop\kinect_leap_dataset\acquisitions\P1\G1\1_depth.bin', 'r');
A = fread(I, 480*640, 'uint8=>uint8');
A = reshape(A, 480, 640);
min_row = min(A);
min_col = min(min_row);
for i = 1:480
for j = 1:640
if ((A(i,j) > (min_col + 10)) || (A(i,j) == (min_col + 10)))
A(i,j) = 1;
else
A(i,j) = 0;
end
end
end
imshow(A)
代码 2
image = imread('D:\dsktop\kinect_leap_dataset\acquisitions\P1\G1\1_depth.png');
I = fopen('D:\dsktop\kinect_leap_dataset\acquisitions\P1\G1\1_depth.bin', 'r');
A = fread(I, 480*640, 'uint8=>uint8');
A = reshape(A, 480, 640);
min_row = min(A);
min_col = min(min_row);
for i = 1:480
for j = 1:640
if ((A(i,j) > (min_col + 10)) || (A(i,j) == (min_col + 10)))
image(i,j) = 1;
else
image(i,j) = 0;
end
end
end
imshow(image)
请告诉我这段代码有什么问题以及为什么我没有发现任何问题?
【问题讨论】:
-
您的
A是uint8类型,并且具有值{0,1}以显示“白色”Matlab 预计uint8 值为255。尝试imshow(A*255);或imshow(A,[]);或imagesc(A);。 -
您的深度信息
A似乎以“行专业”顺序存储,而不是 matlab 的“列专业”。尝试阅读 A:A = fread(I, 480*640, 'uint8=>uint8'); A = reshape(A, 640,480).'; -
我试过了,但还是一样。
-
您确定数据以每像素 8 位存储吗?
-
谢谢谢!!现在图片变成了正确的黑白 :) 感谢您在这个愚蠢的问题上容忍我。 ;D
标签: matlab kinect image-segmentation gesture-recognition image-thresholding