在matlab中理解imread

时间:2017-08-23 13:57:10

标签: matlab

我需要在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?

1 个答案:

答案 0 :(得分:1)

如果您的图像是着色图像,那么它将是width*height*3,其中3是RGB通道。因此,img(:,:,1)表示img的红色频道,其尺寸为width*height。由于imguint8(无符号整数8位),为了计算实数值的算法,我们使用double将其数据类型从{{1}更改为double }}

当我们写uint8时,我们会替换depth(depth == 255) = -100替换为255的所有depth值。问题是发生了什么以及为什么我们这样做?因为,您希望将最终结果保存在-100的图像中,所有值都标准化为0到255.因此,如果此替换后的最大深度值为150,最小值为-100,则最终结果,-100像素值为0,100像素值为uint8,150为255.