关于图像的数字表示

图像从色彩和主要分成灰度图像和彩色图像,我的题目是对灰度图像的处理,灰度图像可以用三基色表示参数的二维数组进行表示,对于标准的长方形点阵取样每一个元素表示一个图像像素点的颜色信息,图片文件一般来说就是按照数二维组排列构成文件,然后在matlab中使用imread进行读取并处理。

目前已经测试过的imread支持的格式有BMP、PNG、TIF、JPG

考虑之后方便C语言实现就只对BMP格式进行深入学习

BMP格式(Bitmap)

BMP是windows操作系统中的标准图像文件格式,特点是包含的信息比较丰富,是无损失的图像文件格式,其投头的格式为:

偏移量 域名称 大小 内容
0000H 文件标识 2 识别位图的类型
0002H File Size 4 表示文件的大小,单位是B
0006H Reserved 4 保留信息,用处目前不明只知道必须为0
000AH Bitmao Data Offset 4 从文件开始到位图数据之间的偏移量
000EH Bitmap Header Size 4 位图的信息头的长度,一般是28H
0012H Width 4 位图的宽度,单位是像素
0016H Height 4 位图的高度,单位是像素
001AH Planes 4 位图的位面数,肯定是1
001CH Bit per pixel 2 每个像素的位数,1\4\8\16\24\32,分别表示2的N次方的色位,单色图像默认为1,即只有黑白
001EH Comression 4 压缩说明,0:不压缩;1:使用8位RLE压缩方式;2:使用4位RLE压缩方式;3:Bitfields-位域存放方式
0022H Bitmap Data SIze 4 用字节数字表示的位图数据的大小,必须是4的倍数
0026H HResolution 4 用像素表示水平分辨率
002AH VResolution 4 用像素表示垂直分辨率
002EH Colors 4 位图使用的颜色数
0032H Important Colors 4 指定的重要的颜色数,当数值等于Colors的数值的时候表示所有颜色一样重要
____H Palette N*4 调色板规范,四个字节分别用来描述蓝色、绿色、红色和填充符的数值,在彩色图像的处理中就是各个通道的作用
____H Bitmap Data 包含扫描的信息,扫描顺序是从右向左,从上到下

亮度图像

亮度图像是一个二维数组矩阵,数据类型可以是double、uint8、uint16类型,范围分别是[0,1]、[0,255]、[0,65535],风别代表着二值图像、8位RGB图像、16位RGB图像,对于二值图像就应该用double数据类型读取数组。

关于MATLAB中文件的读取和输出

imread

MATLAB中主要使用imread函数从图片中读取图像信息使用方法为:

[a,map]=imread['文件名']

对于BMP格式的图片,低于24b的图片读取的是索引图像,24b的BMP格式读取的是RGB图像,32b读取的是24b的RGB图像和8b的填充数据。
对于灰度图像可以用

function[y]=readgray(I)
也有
function[y]=rgb2gray(I)可以转化为灰度图像

(正在尝试使用)

imwrite

MATLAB提供了imwrite来对举证组成的图像文件进行保存,调用方式为:

imwrite(A,文件名,格式)

格式可以省略,直接加在文件名后,表示灰度图像时A表示二维举证,当图像为真彩RGB图像时,A是MN3的举证,与imread相对应的,imwrite也可以保存为读取相同的格式,这里尝试了.bmp,.jpg,.png,.tif格式可正常运行。

imshow和image

使用方法:

imshow(I)

I的要求与imwrite使用的要求一样,直接使用imshow可以显示出真实尺寸的图片,像素与物理显示器的像素对应。
可以使用figure,imshow(X,'berder','tight');属性控制去掉窗口的边框。

而image函数则是附带坐标的图像函数显示,对于位图现实的就是像素点数量

其他

参考教程找到了一段直线检测的代码:

clc,close
BW=imread('test_1.tif');
BW=rgb2gray(BW);
thresh=[0.01,0.17];
sigma=2;%定义高斯参数
f = edge(double(BW),'canny',thresh,sigma);
figure(1),imshow(f,[]);
title('canny 边缘检测');  [H, theta, rho]= hough(f,'RhoResolution', 0.5);
%imshow(theta,rho,H,[],'notruesize'),axis on,axis normal
%xlabel('\theta'),ylabel('rho');  peak=houghpeaks(H,5);
hold on  lines=houghlines(f,theta,rho,peak);
figure,imshow(f,[]),title('Hough Transform Detect Result'),hold on
for k=1:length(lines)  xy=[lines(k).point1;lines(k).point2];  plot(xy(:,1),xy(:,2),'LineWidth',4,'Color',[.6 .6 .6]);
end  

效果如下:

正在理解各个函数的作用。

关于matlab的图像显示方法相关推荐

  1. MATLAB的图像显示方法

    文章和代码以及样例图片等相关资源,已经归档至[Github仓库:digital-image-processing-matlab]或者公众号[AIShareLab]回复 数字图像处理 也可获取. 文章目 ...

  2. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理

    3.1数据的获取 3.1.1从Excel中读取数据 a= xlsread('路径',n(sheetn),'A(n-1):Bn(读入的数据范围)') 3.1.2从TXT中读取数据 3.1.2.1.1 同 ...

  3. 光流 | 基于Matlab实现Lucas-Kanade方法:方法2(附源代码)

    github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 基于Matlab实现Lucas-Kanad ...

  4. 光流 | 基于Matlab实现Lucas-Kanade方法:方法1(附源代码)

    github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 基于Matlab实现Lucas-Kanad ...

  5. gps数据处理matlab,基于Matlab的数据处理方法在GPS高程拟合中的应用

    基于Matlab的数据处理方法在GPS高程拟合中的应用 在分析GPS高程异常拟合模型实质的基础上,结合工程实例,顾及地球重力场的空间连续性特点,运用Matlab中的拟合插值函数Griddata等进行高 ...

  6. C/C++ VS中调用matlab函数的方法

    C/C++ VS中调用matlab函数的方法 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/73743654 Matla ...

  7. matlab用for编写乘法表,实验二 Matlab程序设计基本方法1

    实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一.实验目的: 1.熟悉MATLAB 程序编辑与设计环境 2.掌握各种编程语句语法规则及程序设计方法 3.函数文件的编写和设计 4.了 ...

  8. bms用matlab吗,一种BMS的MATLAB建模集成方法与流程

    技术特征: 1.一种BMS的MATLAB建模集成方法,其特征在于,包括以下步骤: S01:将BMS分为输入模块.输出模块及若干个中间模块,并定义各模块的名称: S02:定义各模块的输入端口和输出端口的 ...

  9. 基于matlab的prony方法实现,基于MATLAB的Prony方法实现

    基于MATLAB的Prony方法实现 本文介绍了Prony方法在MATLAB中的实现和应用.首先叙述了Prony方 (本文共2页) 阅读全文>> 瞬时频率是信号重要的瞬时特征参数,由于其在 ...

  10. [转]MFC子线程更改图像数据后更新主窗口图像显示方法

    程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...

最新文章

  1. 【数据立方】数据立方体的有效计算、物化materialization,索引OLAP数据
  2. Xamarin Essentials教程陀螺仪Gyroscope
  3. python掌握程度怎么判断-Python学到什么程度可以面试工作?
  4. 增加mysql的sortbuffer_Mysql设置sort_buffer_size
  5. windows批量添加用户
  6. Mysql分组查询group by语句详解
  7. linux iptables找不到,centos /etc/sysconfig/下找不到iptables文件解决方法
  8. Linux的文件传输工具(WinSCP)付下载连接
  9. [Bootstrap-Table] 中的事件用例
  10. java关联查询实战_MyBatis初级实战之六:一对多关联查询
  11. dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决
  12. 数学好对学计算机有什么好处,编程对学数学有什么好处
  13. 网易云音乐歌词下载器
  14. Filter动态代理敏感词汇过滤
  15. 拆解iPhone6S---ESM
  16. STM32 F7xx + LAN8720+LWIP1.4.1调试坑点记录
  17. 用python分析世界各国的 “幸福指数”。
  18. Origin下载安装教程(亲测有用)
  19. df -h无响应问题解决
  20. 简易开发的百度地图API

热门文章

  1. 3D缺陷检测---小论文
  2. VUE引入阿里icon
  3. 联想教育应用使用说明(7.6版本)——第5章 常见的问题与解答
  4. uefiboot 文件_UEFI启动文件bootx64.efi的定制
  5. 深信服桌面云(aDesk)学习笔记
  6. SI9000差分阻抗计算示例
  7. java 生成 顺序 uuid_Java 生成有序 UUID
  8. 致远OA_0day批量植Cknife马一步到位
  9. 史上最全Linux面试题(2020最新版)
  10. 计算机 仿真 流体力学剪切应力,基于人体血管B型主动脉夹层三维建模及血流动力学仿真研究...