MATLAB接口

imread(img),读取保存的数据是unit8类型的。im2double(img)处理的数据全是[0,1]之间的。在matlab中为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8变为double。

imshow函数显示图像时对double型会认为0~1范围内,即大于1都显示为白色,而imshow显示unit8时是0~255范围。

imwrite同。     解决:

imshow(I/255).............将图像矩阵转化到0-1之间

imshow(I,[ ])...........将图像矩阵I的最大值和最小值分别作为纯白255和纯黑0,之间的I值映射为0-255之间的标准灰度值

从实验结果看,两种方法都解决了问题,但从显示的图像看,第二种方法的明暗黑白对比强烈些 
如果空矩阵 ([]) 来代替 [low high], imshow 函数将使用 [min(I(:))max(I(:))]作为第二个参数。

若希望将0-65535的灰度级映射到0-255上,则可采用以下的办法:

uint8(double(number)/65535*255)

把图像I1转换成double精度类型(假设图形矩阵范围0~255)

I2=im2double(I1)   或  I64=double(I8)/255;   %uint转换成double

如果矩阵复合数据图像标准(0~1之间),

I3=im2uint8(I2)  %把矩阵I2转换成uint8类型

如果超出0~1范围,就要用uint8()

I8=uint8(round(I64*255));  %double转换成uint8    自动切割0-255

或 I3=mat2gray(I2)  &把矩阵转化为灰度图像格式double
 

complex_data = double(full_data(:,:,1)) + i*double(full_data(:,:,2));    

MATLAB接口_第1张图片

 

level 4 开始 矩阵超出索引维度

你可能感兴趣的:(MATLAB接口)