大家好,
我正在尝试使用Scilab将灰度图像上的每像素位数减少到8以下
谢谢。
答案 0 :(得分:1)
我认为这是不可能的。 Scilab中可用的整数类型是一个或多个字节,请参阅类型here。
如果您想要丢失高频信息,可以移出信息。
for x=1:width
for y=1:height
// Get pixel and make a 1 byte integer
pixel = int8(picture(x,y))
//Display bits
disp( dec2bin(pixel) )
// We start out with 8 bits - 4 = 4 bits info
bits_to_shift = 4
shifted_down_pixel = pixel/(2^bits_to_shift)
//Display shifted down
disp( dec2bin(shifted_down_pixel))
//Shift it back
shifted_back_pixel = pixel*(2^bits_to_shift)
disp( dec2bin(shifted_back_pixel))
// Replace old pixel with new
picture(x,y) = shifted_back_pixel
end
end
当然,你可以通过一个大的矩阵操作更快地完成上面的代码,但它是为了展示这个概念。
rgb = imread('your_image.png')
gry = rgb2gray(rgb)
gry8bit = im2uint8(gry)
function result = reduce_bits(img, bits)
reduced = img / (2^bits);
result = reduced * (2^bits);
return result;
endfunction
gry2bit = reduce_bits(gry8bit, 6)
imshow(gry2bit)