我编写了一个 Matlab 脚本,将灰度图像的每个像素的强度级别数量从 256 减少到 2 的某个幂。
img_color = imread('photo.jpg');
img_gray = rgb2gray(img_color);
imshow(img_gray);
[rows, cols] = size(img_gray);
noOfDesiredIntensityLevels = 2; // test data. will check for 4,8,16,32,etc.
bitsNeededToRepresentIntensityLevels = log2(noOfDesiredIntensityLevels);
new_img = img_gray;
for i = 1 : rows
for j = 1 : cols
new_img(i,j) = floor(img_gray(i,j)/(2^(8-bitsNeededToRepresentIntensityLevels)));
end
end
figure
imshow(new_img);
执行时,脚本返回黑色图像。我的期望是图像将变成黑白(每个像素的强度值将是 0 或 1)。
我在这里想念什么?
PS:我是 Matlab 和图像处理的新手。所以,请忽略我理解中的任何错误。

