double只是将像素的灰度值从int8换为double,数值大小不变,125还是125.0。
im2double则附带了归一化操作,125变成了125/255=0.490196078
double也不是毫无用处,在将一个256级的灰度图修改为4级时候就用这个,用im2double反而不行。
%-----图像采样,棋盘效应,图像量化,灰度级减少----
clear;
close all;
I=imread('lena_std.tif');
I0=rgb2gray(I); %rgb转灰度图I0,此时还是int8型
%---双精度化---
I1=im2double(I0); %附带归一化
I2=double(I0); %只是整型转为double
imshow(I0);
%----空间采样---
I3=I0(1:16:end,1:16:end);
figure
subplot(1,2,1),imshow(I0),title('原始图像');
subplot(1,2,2),imshow(I3),title('16*16');
%-----存储---
xlswrite('lena.xlsx',I(:,:,1),1);
xlswrite('lena.xlsx',I0(:,:,1),2);
%----量化灰度等级----
I3=round(I2/64)*64;
I4=floor(I2/64)*64;
figure
subplot(1,3,1),imshow(I0),title('原始图像');
subplot(1,3,2),imshow(uint8(I3)),title('round -4级');
subplot(1,3,3),imshow(uint8(I4)),title('floor -4级');
相应的变量类型
修改灰度等级的结果: