请选择 进入手机版 | 继续访问电脑版

MATLAB 图像处理基础(1)

[复制链接]
命中不缺你 发表于 2021-1-1 10:32:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本文主要记录利用MATLAB图像处置惩罚的学习条记。
1.图像处置惩罚的流程:

导入影像,预处置惩罚,影像分割,后处置惩罚,分类。
2.如果导入图像是彩色图像,盘算影像size:

size包罗图像的行数、列数和第三个维度用来存储RGB,即:

可以通过索引到第三维访问图像的单个颜色平面,如1作为第三个索引来提取赤色,2提取绿色,3提取蓝色。
Ig = I(:,:,1); %红
Ig = I(:,:,2);%绿
Ig = I(:,:,3);%蓝
3.大多数图像使用无符号8位整数(uint8)数据范例,它存储从0到255的整数。
利用max函数查找所有元素的最大值:
  1. M = max(A,[],'all') %找出A中所有元素的最大值。
复制代码
4.imsplit()函数:将多通道图像分割成单独的通道.
用法:[c1,c2,c3,…,ck] = imsplit(I)
返回k个图像的聚集,代表k通道图像I中的单个通道。
5.为什么RGB影像要转换成灰度影像
(1)当载入内存时,灰度图像占RGB图像所需空间的三分之一。
(2)由于灰度图像具有三分之一的数据,它需要更少的盘算本领,可以淘汰盘算时间。
(3)灰度图像在概念上比RGB图像简朴,因此在处置惩罚灰度图像时,开辟图像处置惩罚算法可以更直接。
RGB planes:Height * Width * 3(多一维度用于存储RGB信息)
Grayscale:Height * Width
6.利用im2gray()函数将彩色影像RGB转换成灰度影像Grayscale。
Ags = im2gray(A)
由im2gray创建的灰度图像是一个由强度值组成的单一平面。im2gray函数将RGB值转换为灰度值,将R、G、B分量加权和:

7.Contrast and Intensity Histograms 对比度和直方图
强度直方图根据像素的强度值将其分离到多个容器中。比方,深色图像在直方图的低端有许多像素。豁亮区域的像素被收纳在直方图的高端。
imhist(A) 生成直方图;
imadjust(A)可以调解图像,增强对比度;imadjust函数一般只对灰度影像有效,除非引入其他参数。
imlocalbrighten():增强low-light影像,效果如下图:

【注】:图片来自MATLAB资助文档
8.小结:
imread 读入影像
imshow 显示影像
size 盘算影像巨细
imhist 绘制影像直方图(灰度)
imadjust 调解灰度影像的亮度或彩色影像的颜色矩阵。
9.Image Viewer app 影像预处置惩罚工具
使用方法:
(1)输入imtool;

(2)下载Image Processing Toolbox;
(3)在APP菜单栏搜索 Image Viewer;

可以打开影像,检察像元属性信息、调解对比度等。
10.影像分割Segmenting
影像分割:将一幅图像分割成差异的部门称为图像分割。
(1)使用逻辑运算符为影像定义阈值+直方图
强度阈值(Intensity Thresholding):通过设置阈值,将目标类设为1,配景设为0.
设置阈值代码:
  1. img1 = imread("IMG_004.jpg"); %导入影像gs1 = im2gray(img1); %转换成灰度影像gsAdj1 = imadjust(gs1); %对灰度影像举行亮度处置惩罚imhist(gsAdj1) %绘制直方图,通过直方图举行阈值判定BW1 = gsAdj1 >175; %设置阈值imshowpair(img1,BW1,'montage') %显示图像
复制代码
(2)自动选择阈值
利用imbinarize 函数可以自动选择阈值。
用法:
  1. BW= imbinarize(I);%默认情况下,imbinized使用一个全局阈值-图像中的每个像素都使用相同的阈值。BW = imbinarize(I,method) %creates a binary image from image I using the thresholding method specified by method: 'global' or 'adaptive'.
复制代码
一般自选的阈值比通过直方图手动选取的阈值效果要差。
imbinarize函数尚有一种用法,可以通过设置参数,调解前景与后景的亮度。一般默认情况下,影像的前景是亮的(bright),配景是暗的(dark)。
  1. BW = imbinarize(I,'adaptive',Name,Value);BW = imbinarize(I,'adaptive',"ForegroundPolarity","dark");%设置前景是暗的
复制代码

11. sum函数
sum函数用于盘算数组元素的总和。
用法:
  1. S = sum(A,dim)
复制代码
S = sum(A,dim)返回沿dim维度的和。比方,如果A是一个矩阵,那么sum(A,2)是一个列向量,包罗每一行的和;sum(A,1)是一个行向量,包罗每一列的和。

12. plot函数
用法1:
  1. plot(Y)%创建Y中的数据与每个值的索引的二维线图。
复制代码
如果Y是一个向量,那么x轴缩放范围从1到长度(Y)。
如果Y是一个矩阵,那么plot函数画出Y的列与行号的关系。x轴的刻度范围从1到Y的行数。
如果Y是复数,那么plot函数将绘制Y的虚部与Y的实部,这样plot(Y)等价于plot(real(Y),imag(Y))。
13.提高分割精度
可以通过两种方式来改进分割:在二值化前对图像举行预处置惩罚,以及对二值化图像自己举行后处置惩罚。主要技能包罗:去噪处置惩罚、配景隔离和减法、二值形态学。
(1)去噪处置惩罚:Noise Removal


  • 平滑像素强度值,以淘汰厘革对二值化的影响。
(2)配景隔离和减法:Background Isolation and Subtraction


  • 在二值化之前隔离并去除图像的配景。
(3)二值形态学:Binary Morphology


  • 在二值图像中强调特定的模式或形状。
14.spatial filter空间滤波
利用滤波器对影像举行平滑处置惩罚,滤波器filter是一个矩阵(雷同mask)。在影像中放入一个filter时,会创建一个window。

线性滤波:
线性滤波器的原始数据与滤波效果是一种算术运算,即用加减乘除等运算实现,如均值滤波器、高斯滤波器等。
非线性滤波:
非线性滤波器的原始数据与滤波效果是一种逻辑关系,也就是用逻辑运算来实现的,好比最大值滤波器、最小值滤波器、中值滤波器等,是通过比力一定邻域内的灰度值巨细来实现的。

  • fspecial函数用于创建滤波器
    用法:
  1. h = fspecial("average",n) %创建n*n的均匀滤波器
复制代码
16.imfilter函数
对影像举行滤波处置惩罚:
  1. B = imfilter(A,h)
复制代码
来源:https://blog.csdn.net/qq_32649321/article/details/111868960
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )