我需要在python中重新实现matlab代码,但是我从未做过matlab代码,所以有人可以帮我理解它,代码如下所示
img = imread('http://i.stack.imgur.com/8lJw8.png'); % read the image
depth = double(img(:,:,1));
depth(depth==255)=-100; % make the background VERY distinct
[dy dx] = gradient(depth); % compute depth gradients
bmsk = sqrt(dx.^2+dy.^2) > 5; % consider only significant gradient
首先是' depth = double(img(:,:,1))
'输出,因为img是一个矩阵,img(:,:1)是一个宽*高* 256的矩阵?
其次,depth(depth==255)=-100
,是否意味着当一个像素的深度值等于255时,该像素的值减去100?
答案 0 :(得分:1)
如果您的图像是着色图像,那么它将是width*height*3
,其中3是RGB通道。因此,img(:,:,1)
表示img
的红色频道,其尺寸为width*height
。由于img
为uint8
(无符号整数8位),为了计算实数值的算法,我们使用double
将其数据类型从{{1}更改为double
}}
当我们写uint8
时,我们会替换depth(depth == 255) = -100
替换为255
的所有depth
值。问题是发生了什么以及为什么我们这样做?因为,您希望将最终结果保存在-100
的图像中,所有值都标准化为0到255.因此,如果此替换后的最大深度值为150,最小值为-100,则最终结果,-100像素值为0,100像素值为uint8
,150为255.