文章目录

  • 一、MATLAB基础
  • 二、图像基础
  • 三、文件的读取与图像格式转换

一、MATLAB基础

clc :清除命令窗口;clear all :清除环境(从内存中清除所有变量);dir :列出当前目录下的所有文件;who:将内存中的当前变量以简单形式列出;close all :关闭所有的 Figure 窗口。Matlab的变量名以字母打头,后面最多可跟19个字母或数字,不能使用内部函数或命令名作为变量名,Matlab中的变量名区分大小写。

fread                        % 读取二进制文件中的数据
A = fread(fileID)          % 将打开的二进制文件中的数据读取到列向量 A 中,并将文件指针定位在文件结尾标记处。% 该二进制文件由文件标识符 fileID 指示。读取文件后,请调用 fclose(fileID) 来关闭文件。
A = fread(fileID,sizeA)     % 将文件数据读取到维度为sizeA的数组A中,并将文件指针定位到最后读取的值之后。fread按列顺序填充A。
A = fread(fileID,sizeA,precision) % 根据 precision(精度) 描述的格式和大小解释文件中的值。sizeA 参数为可选参数。
[A,count] = fread(___)         % 还将返回 fread 读取到 A 中的字符数。
fileID = fopen(filename)   % 打开文件 filename 以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。% MATLAB保留文件标识符 0、1 和 2 分别用于标准输入、标准输出(屏幕)和标准错误。% 如果 fopen 无法打开文件,则 fileID 为 -1。
fwrite(fileID,A)            % 将数组 A 的元素按列顺序以 8 位无符号整数的形式写入一个二进制文件。
fwrite(fileID,A,precision)  % 按照 precision 说明的形式和大小写入 A 中的值。
count = fwrite(___)         % 返回 A 中 fwrite 已成功写入到文件的元素数。
fseek                       % 移至文件中的指定位置,语法:fseek(fileID, offset, origin)、status = fseek(___)
fseek(fileID, offset, origin)   % 在指定文件中设置文件位置指示符相对于 origin 的 offset 字节数。% 当操作成功时,status = fseek(___) 返回 0。否则,fseek 将返回 -1。              C=[-1,0,0;1,-1,0;0,0,2];   % 矩阵赋值:数值按行输入,行之间用分号隔开。省略最后的分号会回显矩阵值。
rand                        % 无变量输入时只产生一个随机数
y = rand(n)                % 生成n x n随机矩阵,其元素在(0,1)内
y = rand(m,n)              % 生成m x n随机矩阵,其元素在(0,1)内

MATLAB官方语法支持
MATLAB位运算:

函数                     目的/作用
bitand(a,b)          整数a和b的逐位AND,即相应的位 都是1 ,相应的结果位就是 1;否则相应的结果位是 0。
bitor(a,b)           整数a和b的逐位OR
bitget(x,m:n)        由低位到高位输出。x是要被转换为 2进制 的数,输出从低位低 m 位到第 n 位的数字
bitset(A,pos,V)      将A以二进制来表示,并将第pos个位置,设置为V的值,再将所得到的值转换成 10进制数 并返回。
bitshift(a,k)        返回向左移位k位,相当于乘以2k。k的负值对应于向右移位或除以2|k|并舍入到最接近的整数到负无穷大。
bitxor(a,b)          整数a和b的逐位异或
bitcmp(a)            a的位补码
swapbytes            交换字节顺序a = 60;               % 60 = 0011 1100
b = 13;              % 13 = 0000 1101
c = bitand(a, b)      % 12 = 0000 1100
c = bitor(a, b)       % 61 = 0011 1101
c = bitxor(a, b)      % 49 = 0011 0001
c = bitshift(a, 2)    % 240 = 1111 0000
c = bitshift(a,-2)    % 15 = 0000 1111A=bitset(255,8,0)     % 将255转变成11111111,然后将第八个位置(从右开始数)置为0,% 即为01111111,转换成十进制为127,因此返回A的值为127。

二、图像基础

二进制图像(binary images)像素只存在0,1两个值。每一个像素值将取两个离散值(0或1)中的一个,0表示黑,1表示白。二进制图像能够使用无符号8位整型或双精度类型的数组来存储。

灰度图像(intensity images )是包含灰度级(亮度)的图像。在MATLAB中,灰度图像由一个unit8、unit16或双精度类型的数组来描述。灰度图像实际上是一个数据矩阵,该矩阵的每一个元素对应于图像的一个像素点,元素的数值代表一定范围内的灰度级,通常0代表黑色,1、255或65535(不同存储类型)代表白色。 由于灰度图像存储时不使用调色板,因而MATLAB使用一个默认的系统调色板来显示图像。灰度图像的像素值就是YCbCr中每个像素的亮度分量值。

索引图像(indexed images )是一种把像素值直接作为RGB调色板下标的图像。一幅索引图包含一个数据矩阵data和一个调色板矩阵map, data可以是unit8、unit16或双精度类型,而map矩阵内的浮点数。map矩阵的每一行指定一个总是一个m×3的双精度类型矩阵(其中,m表示颜色数目),该矩阵的元素都是[0,1]颜色的红、绿、蓝颜色分量。索引图像可以把像素值直接映射为调色板数值,每一个像素的颜色使用data的数值作为map的下标来获得:数值1表示map的第一行,数值2表示map的第二行,依此类推。

读取索引图像:
[data,map]=imread(filename,permission);
显示索引图像:
image(data),colormap(map);
存储索引图像:
imwrite(data,map,filename,permission)
其中,data为像素索引矩阵,map为调色板矩阵,filename为文件路径,permission为图像文件格式。

RGB图像 。这类图像不使用单独的调色板,每一个像素的颜色由存储在相应位置的红、绿、蓝颜色分量共同决定。RGB图像是24位图像,红、绿、蓝分量分别占用8位,理论上可以包含16M种不同颜色,由于这种颜色精度能够再现图像的真实色彩,所以又称RGB图像为真彩图像。在MATLAB中,一幅RGB图像由一个unit8、unit16或双精度类型的m×n×3数组(通常称为RGB数组)来描述,其中m和n分别表示图像的宽度和高度。在一个双精度类型RGB数组中,每一颜色分量都是一个[0,1]范围内的数值,颜色分量为(0, 0,0)的像素将显示为黑色,颜色分量为(1,1,1)的像素将显示为白色。每一个像素三个颜色分量都存储在数据数组的第三维。例如,像素(10,5)的红、绿、蓝色分量都存储在RGB(10,5,1)、RGB(10,5,2)、RGB(10,5,3)中。

图像存储方式 :MATLAB将图像中的数据存储为双精度型(double),即64位的浮点数。这种存储方法的优点在于使用中不需要数据类型转换,因为几乎所有的MATLAB及其工具箱函数都可使用double作为参数类型,缺点在于表示数据会导致巨大的存储量。所以MATLAB还支持图像数据的另一种类型——8位无符号整数型(uint8),即图像矩阵中的每个数据占用一个字节。
matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算,所以要
先将图像转为double格式再运算。

img = imread('test.jpg');  % 读入是unit8型(0~255)数据
I1  = im2double(img);      % 把图像转换成double精度类型(0~1)
I2  = double(img)/255;     % uint8转换成double,作用同im2double

图像格式间的转换可以间接利用图像读写函数来完成:首先使用imread 函数按照原有图像格式进行图像读取,然后调用imwrite函数对图像进行保存,并指定图像的保存格式。例如,将一幅图像由BMP格式转换为PNG格式,则可以这样实现:首先使用imread读取BMP图像,然后调用imwrite函数来保存图像并指定为PNG格式:

bitmap=imread('mybitmap.bmp','bmp');
imwrite(bitmap,'mybitmap.png','png');


颜色模型之间的转换:

三、文件的读取与图像格式转换

imfinfo('binary.tif') 读取图像文件属性
I=imread('binary.tif'); 将指定图像文件读入工作区
figure; imshow(I); 新创建一个显示窗口,并显示图像文件
imshow(I,[]);  自动调整数据的范围以便于显示M=imread('football.jpg'); 读取 RGB图像 football.jpg
MR=M(:,:,1); 提取图像 R层数据矩阵
MG=M(:,:,2); 提取图像 G层数据矩阵
MB=M(:,:,3); 提取图像 B层数据矩阵
subplot(2,2,1); imshow(M); title('原始图像 ');
subplot(2,2,2); imshow(MR); title('R层灰度图像 ');
subplot(2,2,3); imshow(MG) ;title('G层灰度图像 ');
subplot(2,2,4); imshow(MB); title('B层灰度图像 ');I=rgb2gray(M); 将真彩色图像转换为灰度图
figure;imshow(I);因为RGB图像的色彩非常丰富,而索引图无法全部显示,故利用参数(256)控制转换的图像色彩数量
[X,map]=rgb2ind(M,256); 将真彩色图像 football.jpg转换成256色索引图像
[X1,map1]=rgb2ind(M,32);
[X2,map2]=rgb2ind(M,8);
subplot(2,2,1);imshow(M);
subplot(2,2,2);imshow(X,map);
subplot(2,2,3);imshow(X1,map1);
subplot(2,2,4);imshow(X2,map2);
imwrite(X1,map1,'footballind.bmp'); 将转换后的 32色索引图像保存为 footballind.bmp

subplot(m,n,p)或者subplot(m n p)。subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

clear;
clc;
[a,b]=imread('footballind.bmp'); 读取刚才保存的索引图像footballind.bmp
K=ind2gray(a,b); 将其转换为灰度图
subplot(1,2,1);imshow(a,b);
subplot(1,2,2);imshow(K);
level=graythresh(K); 取灰度图的一个合适阈值
BW=im2bw(K,level); 再将灰度图转换成二值图像
subplot(1,2,1);imshow(K);
subplot(1,2,2);imshow(BW);

MATLAB图像隐藏基础相关推荐

  1. matlab 图像隐藏,将Matlab下隐藏的图形保存为相同大小的图像

    使用以下命令序列连接并启动MATLAB: ssh -x user@server # disabled X11 forwarding unset DISPLAY # unset DISPLAY vari ...

  2. 图像处理学习笔记01:matlab图像操作基础

    读取和写入图像文件 imread函数,读取图像文件 imwrite函数,写入文件,通过指定不同后缀名可以修改图像的格式. imfinfo函数,读取图像文件的属性. 示例1 >> i=imr ...

  3. 图像隐藏matlab代码,picture Matlab简单操作实现图像的隐藏加密 联合开发网 - pudn.com...

    picture 所属分类:其他 开发工具:Others 文件大小:15KB 下载次数:1 上传日期:2018-07-18 09:50:48 上 传 者:至尊宝物语 说明:  Matlab简单操作实现图 ...

  4. 【Matlab 图像】图像基础操作

    图像基础操作 读取图片 读取视频 读取图片 % 读取图像 Img = imread('test2.png'); subplot(2,2,1); imshow(Img); title('原图(RGB图) ...

  5. 【Matlab 控制】矩阵、图像操作基础

    Matlab矩阵.图像操作基础 1. 矩阵操作 计算特征值和特征向量 计算矩阵指数 2. 图像操作 显示单条曲线 显示多条曲线 设置曲线线宽 添加图例 添加x轴y轴标签 添加图像标题 3. 显示结果 ...

  6. Matlab图像处理创新实践-实验2【图像滤波基础(2)】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  7. Matlab图像处理创新实践-实验1【图像滤波基础(1)】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  8. matlab从入门到精通:图像可视化基础操作

    matlab图像可视化 基本要求 (1)掌握图形窗口的创建与控制,以及图形窗口的基本操作: (2)熟练掌握二维和三维绘图基本的命令.线型控制:(3)初步掌握用特殊的图形来表现特殊数据的性质,如面积图. ...

  9. matlab图像隐写,matlab软件图像处理相关内容.ppt

    内容主要分为以下四个篇章: 一.介绍应用matlab处理图像问题 (以一个图像隐写的简单例子为说明线索) 二.应用matlab解决三维血管重建中的图像处理问题 三.图像处理练习(应用matlab解决双 ...

最新文章

  1. Solr配置IK分词器
  2. 从技术输出到产业赋能,网易云信走过的四年
  3. 【创业】创业团队的那些事(二)
  4. Spring XML中如何使用 符号,比如数据库MySQL连接
  5. 1103: 平均学分绩点(函数专题)
  6. 利用汇编挖掘编程语言的本质
  7. 计算机硬件物理设备包含,计算机硬件
  8. 【JAVA笔记】线程(1):多线程的介绍和实现
  9. 计算机组装常用工具有锤子,工具箱中常用的五金工具有哪些?
  10. 公共基础知识:四大名楼简介
  11. google三大论文之--MapReduce:超大机群上的简单数据处理
  12. 【突变检验方法一】MATLAB实现Pettitt突变检验
  13. matlab交叉耦合,交叉耦合矩阵综合问题
  14. SharePoint 2013 CSOM 对象模型属性包
  15. 游戏建模都用什么软件?
  16. php转繁体代码,php在gbk编码下繁体与简体互转函数
  17. 大直径测径仪的工艺流程详解
  18. ZOJ 3605 Find the Marble
  19. python模拟各大网站登陆方式,以及一些爬虫程序,麻麻再也不用担心我学爬虫啦!...
  20. PADS使用技巧——页间连接符的方向转换

热门文章

  1. Unity在线js转C#
  2. 【VUE】将图片的url或file类型转换成base64,并压缩图片大小
  3. STM32 FSMC TFT LCD
  4. 西工大NOJ数据结构理论——007.表达式括号与匹配(严3.19)
  5. ${pageContext.request.contextPath}的作用
  6. java 查看对象内存占用大小
  7. audio不能在苹果手机正常播放的坑,希望可以帮助大家跳过坑
  8. matlab 画三维极值点,用Matlab找一组模拟波形的极值(含极大值、极小值、最大值)并在图中画出来...
  9. 数字证书的创建与使用(采用java)
  10. 牛气霸屏v4.1.8