1带你入门MATLAB图像处理图像类型转换(附matlab程序)

您所在的位置:网站首页 图像的基本类型有几种 1带你入门MATLAB图像处理图像类型转换(附matlab程序)

1带你入门MATLAB图像处理图像类型转换(附matlab程序)

2024-06-12 01:07| 来源: 网络整理| 查看: 265

1.简述

      学习目标:  图像类型的转换

常用图像格式

图像格式:是存储图像采用的文件格式。不同的操作系统、不同的图像处理软件,所支持的图像格式都有可能不同。 在实际应用中经常会遇到的图像格式有:BMP、GIF、TIFF、PCX、JPEG、PSD、PCD、 WMF等。 (1) BMP(Bitmap)文件 (2)GIF文件 (3)TIF文件 (4)JPEG文件

MATLAB图像类型

图像类型:是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同。 在MATLAB图像处理工具箱中,有五种类型的图像: 1. 二进制图像 在一幅二进制图像中,每一个像素将取两个离散数值(0或1)中的一个,从本质上说,这两个数值分别代表状态“开”(on)或“关”(off)。 二进制图像仅使用unit8或双精度类型的数组来存储。 在图像处理工具箱中,任何返回一幅二进制图像的数组均使用unit8逻辑数组存储该图像,并且使用一个逻辑标志来指示unit8逻辑数组的数据范围。 若逻辑状态为“开”(on),数组范围为[0,1];若为“关”(off),则数组范围为[0,255]。

索引图像 索引图像:是一种把像素值直接作为RGB调色板下标的图像。 在MATLAB中,索引图像包含有一个数据矩阵X和一个颜色映射(调色板)矩阵map。数据矩阵:可以是unit8、unit16、双精度类型的; 颜色映射矩阵map:是一个m×3的数据矩阵,其中每个元素的值均为[0,1]之间的双精度浮点型数据,map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。 索引图像可把像素值直接映射为调色板数值,每一个像素的颜色通过使用X的数值作为map的下标来获得,如值1指向矩阵map中的第一行,值2指向第二行,依此类推。 颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB自动将颜色映射表与图像同时装载。 图像矩阵与颜色映射表之间的关系依赖于图像数据矩阵的类型。 如果图像数据矩阵是双精度类型,则数据1指向矩阵map中的第一行,数据值2将指向map中的第二行,依此类推; 如果图像矩阵是unit8或unit16类型时,将产生一个偏移,即数值0表示矩阵map中的第一行,数据值1将指向map中的第二行,依此类推。灰度图像 灰度图像通常由一个unit8、unit16、双精度类型的数组来描述,其实质是一个数据矩阵I,该矩阵中的数据均代表了在一定范围内的灰度级,每一个元素对应于图像的一个像素点,通常0代表黑色,1、255、65 535(针对不同存储类型)代表白色。多帧图像 多帧图像是一种包含多幅图像或帧的图像文件,又称为多页图像或图像序列。 在MATLAB中,它是一个四维数组,其中第四维用来指定帧的序号。 在一个多帧图像数组中,每一幅图像必须有相同的大小和颜色分量,每一幅图像还要使用相同的调色板。另外,图像处理工具箱中的许多函数(如:imshow)只能对多幅图像矩阵的前两维或三维进行操作,也可以对四维数组使用这些函数,但是必须单独处理每一帧。如果将一个数组传递给一个函数,并且数组的维数超过该函数设计的超作维数,那么得到的结果是不可预知的。RGB图像 RGB图像又称为真彩色图像,它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、篮3种不同的颜色,通过三基色可以合成出任意颜色。所以对一个尺寸为n×m的彩色图像来说,在MATLAB中则存储为一个n×m×3的多维数据数组,其中数组中的元素定义了图像中的每一个像素的红、绿、篮颜色值。图形文件格式把RGB图像存储为24位的图像,红、绿、篮分量分别占用8位。 MATLAB的RGB数组可以是双精度的浮点型、8位或16位无符号的整数类型。在一个双精度类型的RGB数组中,每一个颜色分量都是一个[0,1]范围内的数值。如:颜色分量为(0,0,0)的像素将显示为黑色;颜色分量为(1,1,1)的像素将显示为白色。每一个像素的三个颜色分量都存储在数组的第三维中。如:像素(10,5)的红、绿、篮颜色值分别保存在元素RGB(10,5,1)、RGB(10,5,2)、RGB(10,5,3)中。

2.代码及运行结果

%%  将索引图像转换为RGB图像 clear all; close all; [X,map]=imread('trees.tif','tif'); %读取索引图像,X是数据,map是调色板 RGB=ind2rgb(X,map);                %将索引图像转换为RGB图像 figure; imshow(RGB);                       %显示RGB图像 set(gcf,'position',[500,500,600,600]);    

%%  将RGB图像转换为索引图像 clear all; close all; RGB=imread('peppers.png');     %读取RGB图像 [X,map]=rgb2ind(RGB,12);       %将RGB图像转换为索引图像  调色板大小是12行  该值越大越清晰   figure; imshow(X,map); set(gcf,'position',[400,400,600,600]);

 

%%  将RGB图像转换为灰度图像 clear all; close all; RGB=imread('peppers.png','png'); I=rgb2gray(RGB); figure; imshow(I); set(gcf,'position',[300,300,500,500]);

  %%   clear all; close all; [X,map]=imread('trees.tif','tif'); newmap=rgb2gray(map);       %只将调色板转换为灰度 figure; imshow(X,newmap);         %新的调色板,数据不变 set(gcf,'position',[400,400,600,600]);

%% clear all; close all; X=imread('rice.png');     %读取一个灰度图像 Y=grayslice(X,12);        %将灰度图像转换为索引图像 figure; imshow(Y,jet(12));         %通过调色板jet给图像上颜色 set(gcf,'position',[400,400,600,600]);

%%  将索引图像转换为灰度图像 clear all; close all; [X,map]=imread('trees.tif','tif'); I=ind2gray(X,map); figure; imshow(I); set(gcf,'position',[400,400,600,600]);

%%   将RGB图像转换为二值图像 clear all; close all; RGB=imread('peppers.png'); bw=im2bw(RGB,0.4);    %  归一化阈值是0.4    二值图像只有黑色和白色 figure; imshow(bw); set(gcf,'position',[400,400,500,600]);

 

%%   clear all; close all; A=rand(400,400);     %建立一个数据矩阵 I=mat2gray(A);       %将数据矩阵转换为灰度图像 figure; imshow(I);             set(gcf,'position',[200,200,400,300]);

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3