Matlab 乘以负数显示 0
Matlab multiply with a negativ number shows me 0
我正在尝试读取图像的 rgb 并将它们与 -1 相乘。问题是这个脚本的每个输出都是 0。例如 A(1,1) 是 144 而 144 * -1 不是 0。那么我在这里缺少什么?
A = imread('image.ppm');
[M,N] = size(A);
blocksize = 8;
for i=1:1:blocksize
for j=1:1:blocksize
disp(A(i,j) * - 1);
end
end
A
是 uint8
类型。 MATLAB 使用整数饱和算术。在饱和算术中,144 * -1 = -144 = 0
.
解决方法是使用im2double
:
A=im2double(A)
请注意,MATLAB 将 class double
的图像保存在 [0,1] 范围内,而 class uint8
的图像保存在 [0,255] 范围内。使用 imshow
和 imsave
时您会注意到这种差异。 im2double
将正确转换范围。
我正在尝试读取图像的 rgb 并将它们与 -1 相乘。问题是这个脚本的每个输出都是 0。例如 A(1,1) 是 144 而 144 * -1 不是 0。那么我在这里缺少什么?
A = imread('image.ppm');
[M,N] = size(A);
blocksize = 8;
for i=1:1:blocksize
for j=1:1:blocksize
disp(A(i,j) * - 1);
end
end
A
是 uint8
类型。 MATLAB 使用整数饱和算术。在饱和算术中,144 * -1 = -144 = 0
.
解决方法是使用im2double
:
A=im2double(A)
请注意,MATLAB 将 class double
的图像保存在 [0,1] 范围内,而 class uint8
的图像保存在 [0,255] 范围内。使用 imshow
和 imsave
时您会注意到这种差异。 im2double
将正确转换范围。