使用Matlab进行图像处理

图像处理是操纵图像的数字属性以提高其质量或从图像中获得所需信息的过程。它需要在图像处理应用程序中导入图像,分析图像,然后对图像进行操作,以获得能够产生预期结果的适当输出。

在这篇文章中,我们将讨论使用Matlab进行图像处理和分析的基础知识,以确定图像特征,调整图像特征,并提高图像质量。

前提条件

  • 在你的计算机中安装有[Matlab]。

  • 了解[Matlab]的基础知识。

在Matlab中导入图像

导入图像包括将图像带到Matlab的当前目录中。这样就可以使用该图像了。

要进行这一操作,请打开Matlab并执行以下命令。

i = imread('name of the image;') %This will assign the image to i
imshow(i);
复制代码

使用Matlab对图像进行增强

这是改进数字图像以获得更适合视觉显示的结果的过程。图像增强可以通过image filtering 和deblurring 。

图像过滤

这是一种图像增强的形式,强调或省略图像的选定属性。图像过滤主要涉及改变图像中某些像素的浓度。

色彩过滤使图像更有吸引力或强调某些图像像素。例如,绿色可以强调植被,而蓝色则强调水体。

这个过程可以使图像偏红、偏绿或偏蓝,这取决于所应用的浓度水平。imhist 函数给出了图像中每个像素的颜色浓度的图形演示(柱状图)。

i =  imread('nyali.jpg');
imshow(i)
Red = i(:,:,1);
Green = i(:,:,2);
Blue = i(:,:,3);
temp = i;
复制代码
imhist(Red);
复制代码
imhist(Green);
复制代码
imhist(Blue);
复制代码
figure;
temp = i;
temp(:,:,1) = temp(:,:,1) + 100;
imshow(temp);
复制代码
figure;
imshow(i)
temp = i;
temp(:,:,2) = temp(:,:,2) + 100;
imshow(temp);
复制代码
temp = i;
temp(:,:,3) = temp(:,:,3) + 100;
imshow(temp);
复制代码

图像去模糊化

通过使图像上的模糊像素变得更加清晰,来增加图像的清晰度。为了进行这项工作,我们首先使用下面的代码导入图像。

i =  imread('nyali.jpg');       %this code imports the image
imshow(i)
复制代码
  • 从原始图像创建一个模糊的图像i 。这个图像将被用作去模糊过程的模拟器。

  • 首先,通过使用fspecial ,以指定的线性运动(在我的例子中,我将使用50个像素,角度为10度)制作一个点扩散函数(PSF),然后通过使用imfilter 函数将PSF与图像进行卷积。

PSF = fspecial('motion',50,10);
Idouble = im2double(i);
blurred = imfilter(Idouble,PSF,'conv','circular');
imshow(blurred)
复制代码
  • 使用deconvwnr 命令来恢复模糊的图像。

wnr1 = deconvwnr(blurred,PSF);
imshow(wnr1)
复制代码

获取图像中包含的物体数量

图像中包含的物体数量可以通过以下步骤确定。

  • 去除那些不需要数值的物体。

  • 通过去除图像的原始背景,使其具有统一的背景。

  • 将图像改变为灰度图像。

  • 创建图像的二进制版本,可以对要分析的对象进行数值分析。

在这个过程中使用了下面的代码片段。

i = imread('imageName'); %import the image
imshow(i)
复制代码
se = strel('disk',150);
background = imopen(i,se);  %Performs morphological openning
imshow(background)
复制代码
  • 从原始图像中去除背景近似图像。这将形成一个具有统一背景但有点暗的结果图像。

i2 = i - background;
imshow(i2)
复制代码
  • 将图像格式从RGB改为灰度。新处理的图像将被分配到i3 。

i3 = rgb2gray(i2);
imshowi3
复制代码
  • 使用imbinarize 命令来创建灰度图像的二进制版本i3 。

bw = imbinarize(i3);
bw = bwareaopen(bw,50);
imshow(bw)
复制代码

二进制版本的图像可以进行物体分析。结果的准确性取决于物体的大小、参数连通性和物体之间的间距。

请注意,绿色的物体不存在于二进制版本的图像中,因为真正的颜色(红、绿、蓝)不能被二进制化。

cc = bwconncomp(bw) % shows image information复制代码

在图像中找到一个特定颜色的区域

在图像中具有不同颜色的物体的区域可以通过颜色阈值法用Matlab确定。阈值化是根据强度将像素分配到某些类别。

颜色阈值处理也使我们能够确定地图中选定特征的区域。例如,在卫星地图中找到一个水体的面积。

为了证明这个概念,我将从一张卫星地图图片中确定一个水体的面积。该图片的分辨率为480 * 494 像素,深度为32,按卫星计算。

i = imread('l.victoria.PNG'); %import the image
imshow(i)
复制代码
i2 = rgb2gray(i); % make a grayscale image of i
imshow(i2)
复制代码
imhist(i2) %histogram for pixel distributions复制代码

从直方图上看,X轴代表强度值,Y轴代表像素数。

  • 在Matlab窗口工具栏中打开APPS,向下滚动到图像处理和计算机视觉,然后点击颜色阈值。

  • 在新的窗口中从工作区加载一个图像,然后选择一个颜色空间,点击HSV。

  • 调整标有H 的旋钮以去除背景色,调整S 和V 以使要分析的对象的边界平滑。

  • 通过点击show binary 按钮,创建一个二进制版本的结果图像。

  • 将二进制版本导入到工作区进行进一步分析,它将被标记为BW 。二进制版本的形状与湖泊的形状相似,我们可以用函数imshowpair ,直观地比较这两幅图像。

imshowpair(i,BW,'montage')
复制代码
  • 为了找到二进制版本图像的图像统计,使用regionprops 函数。

stats = regionprops('table',BW,'all')
复制代码

以像素为单位的区域面积是表格中的面积道具之和。

areainpixels = sum(props.Area)
复制代码

面积可以使用地图上可能提供的比例尺转换为平方公里。通常,比例尺有一个预先确定的数值,以米、英里或公里为单位表示。

使用imtool(i) 功能来测量线性比例尺的起点和终点之间的距离。测量值的单位是像素,它代表比例尺的预定尺寸。从像素转换到所需的单位。

总结

Matlab为图像处理提供了一个完美的环境,因为它的命令和片段很容易遵循和应用。

图像处理有广泛的应用领域,如。

  • 摄影。

  • 图像的地理数据分析。

  • 装饰品。

  • 了解生物结构。

  • 机器视觉,和娱乐。

从图像中提取的信息的准确性取决于用于处理图像的工具的质量,Matlab为图像处理提供了更好的工具。

如何使用Matlab进行图像处理相关推荐

  1. 基于matlab的硅晶体模型,基于Matlab的图像处理技术识别硅太阳电池的缺陷

    第 44 卷 第 7 期 2010 年 7 月 上 海 交 通 大 学 学 报 JOURNAL OF SHANGHAI J IAOTON G UNIVERSITY Vol. 44 No. 7 Jul. ...

  2. Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域

    Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/detail ...

  3. Matlab计算机视觉/图像处理工具箱(待续)

    Matlab计算机视觉/图像处理工具箱推荐 http://blog.csdn.net/liuyue2046/article/details/12992139 VLFeat和Piotr's Image ...

  4. 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

    本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...

  5. matlab怎么利用圆形度提取园,基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf...

    基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf 第36卷第2期 中国农机化学报 Vol_36No.2 2015年3月 JournalofChinese Mechanization Ma ...

  6. matlab fspeical,MATLAB数字图像处理.doc

    MATLAB数字图像处理 MATLAB常用图像操作 转换图像类型 例1.对一幅图像进行二值化处理,代码及结果如下: load trees BW=im2bw(X,map,0.4); imshow(X,m ...

  7. Matlab数字图像处理——图像处理工具箱Image Processing Toolbox

    Image Processing Toolbox 图像处理工具箱包含的功能: 图像的读取和保存 图像的显示 创建GUI 图像的几何变换 图像滤波器设计及线性滤波 形态学图像处理 图像域变换 图像增强 ...

  8. Matlab数字图像处理——图像文件的读取

    文章目录 一.Matlab中获取图像信息的函数 imfinfo 二.Matlab读取图像文件的函数 imread 三.Matlab保存图像文件的函数 imwrite 完整目录 一.Matlab中获取图 ...

  9. matlab数字图像处理课程设计报告,数字图像处理初步-实验1

    MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...

  10. matlab:图像处理

    matlab:图像处理 读取图像 图像显示 图像调整 图像增强 图像滤波 图像分割 特征提取 目标检测 图像拼接 Matlab是一个强大的图像处理工具,可以对图像进行各种处理和操作.以下是Matlab ...

最新文章

  1. 分布式账本(Distributed ledger)
  2. python使用np.logspace函数在对数刻度上创建一个对数等距数组实战:在对数刻度上创建一个数组(指定数值个数以及是否包含末尾界值)、使用不同的基数(底数)在对数刻度上构建等距数组、可视化
  3. Java基础篇:String、StringBuffer、StringBuilder
  4. 计算机应用基础形考作业3Excel,国家开放大学《计算机应用基础》考试与答案形考任务模块3 模块3 Excel 电子表格系统—客观题答案(2020年整理).pptx...
  5. LeetCode 421. 数组中两个数的最大异或值(Trie树)
  6. linux下boost库链接动态库失败
  7. 社团管理系统用c语言1000,图书馆管理系统C语言啊1000行啊,哪位老哥有啊??...
  8. java读取sh脚本_linux环境下java读取sh脚本并执行
  9. 猴子爬山编程java_Java趣味编程100例
  10. [转]解读2014之前端篇:任性的颠覆式改变
  11. DNS 正向查找与反向查找
  12. python运行cmd命令和opencv搭建_Python环境搭建之OpenCV
  13. 人人商城数据字典---链接内容
  14. mysql 2000安装教程_Win10 64位安装个人版SQL2000图文教程
  15. ROS安装教程(ubuntu18.04+melodic版本)
  16. 为你的Android应用构建窗口小部件(App Widget)
  17. wordpress如何获取文章图片及图片路径
  18. ms office excel2013教程 - 分类汇总
  19. 6个免费高清图库素材库,设计师、自媒体都在用~
  20. 无人驾驶清扫车落地之路的技术解析

热门文章

  1. 五大常见的数据类型之 String
  2. shell 字符串包含
  3. 直播APP源代码之如何搭建红包秒杀功能
  4. what is IMHO?
  5. 河北省职称计算机35题,河北省2012年职称计算机考试练习题:EXCEL
  6. Typescript声明文件详解
  7. opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]
  8. java 渐变橡皮擦_橡皮擦 的动态 - SegmentFault 思否
  9. Win2K无盘终端网组建全攻略(5)(转)
  10. mc用云服务器搭建_mc云服务器搭建