您的位置:首页 > 编程语言 > MATLAB

Matlab数据类型

2013-09-18 20:48 190 查看
今天写了一个读取多个图片(图片是个灰度图像)的程序,读取进来后对图片进行二值化,却发现输出的图片显示全黑。认真查看程序还是看不出问题,于是写了下面的程序能够显示黑白分明的图片。查看command windows变量区。发现cut(:,:,i)的数据类型是unit8,在看看help imshow的说明。由于已经二值化了,所以这个unit8只有0,1两个元素。256是白色。所以造成1的亮度太暗无法显示。
为什么cut(:,:,i)是unit8类型?
[FileName,PathName] =uigetfile('*.bmp','Select the bmp-file','MultiSelect',
'on');
len=length(FileName);
for i=1:len
cut(:,:,i)=imread(FileName{i});
cut(:,:,i)=~im2bw(cut(:,:,i),graythresh(cut(:,:,i)));
end
hu=cut(:,:,1)
imshow(cut(:,:,1))

clc;
clear all;
[FileName,PathName] =uigetfile('*.bmp','Select the bmp-file','MultiSelect',
'on');
len=length(FileName);
for i=1:len
cut(:,:,i)=~im2bw(imread(FileName{i}),graythresh(imread(FileName{i})));
end
imshow(cut(:,:,1));
由上两个程序,可以得出*.bmp文件是个存储unit8数据,于是把logical赋给unit8,结果是unit8。
temp=imread('001.bmp');
temp=~im2bw(temp,graythresh(temp));
imshow(temp);


最后总结下matlab的数据类型

数据类型。MATLAB的数据类型包括:

  double 双精度浮点

  uint8 无符号8位整数

  uint16 无符号16位整数

  uint32 无符号32位整数

  int8 有符号8位整数

  int16 有符号16位整数

  int32 有符号32位整数

  single 单精度

  char 字符

  logical 逻辑型(二值)

  数据类型转换

  

  B = data_class_name(A)

  比如

  

  >> C = [1.4 1.5]

  >> D = uint8(C) D=1 2

  图像类型分为:

  

  Intensity image 灰度图

  Binary image 二值图

  Indexed image 索引图

  RGB image 彩色图

  在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换

  

  function to from

  im2uint8 uint8 logical,uint8,uint16,double

  im2uint16 uint16 logical,uint8,uint16,double

  mat2gray double double%把输入的数据转换成[0.0 1.0]范围内的double数据类型

  im2double double logical,uint8,uint16,double

  im2bw logical uint8,uint16,double

  比如

  

  g = mat2gray(A, [Amin, Amax]);%Amin对应0.0,Amax对应1.0

  g = mat2gray(A);

  g = im2double(h);

  g = im2bw(f, T)

  其中A是浮点型的图像,Amin和Amax是浮点数的范围,h和f是任意类型的图像,T是分割的阈值。

要注意在阈值分割里,im2bw(f,t)。中这个t是0-1范围内的。

总之matlab的数据类型还是比较容易掌握的,平
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: