一、Matlab图像处理入门
专栏文章目录
一、 Matlab图像处理入门
文章目录
- 专栏文章目录
- 今日任务:
- 一、千呼万唤始出来——主角介绍
- 1、初识数字图像处理
- 2、初识MATLAB
- 二、言归正传——快速进入任务
- 1.软件安装
- 2.开始coding
- a.插播一个小技巧
- 三、总结(划重点)
今日任务:
- 调用imread读入一张图片;观察workspace中,内存变量的dimension和数据类型;
- 调用imshow直接显示图像(同时显示R通道、B通道和G通道);
- 对图像的三个通道进行简单平均,得到单通道,并进行显示。
3.1 方法1,逐像素完成,使用两层for循环;
3.2 方法2,直接利用矩阵运算完成;
3.3 测试两种方法的时间。将代码至于tic和toc之间即可1。
一、千呼万唤始出来——主角介绍
1、初识数字图像处理
顾名思义,所谓“数字图像处理”就是对数字图像的相关操作。(权威说法:数字图像处理是指借助于数字计算机来处理数字图像2)。图像是通过视觉传感器把我们的三维世界映射到二维空间的一种载体(ps:ps:ps:映射的过程大量信息会被丢失,所以基于图像输入的三维重建是病态的。相关问题后期我们慢慢讨论),一幅图像可被定义为一个二维函数f(x,y)f(x,y)f(x,y),其中的xxx和yyy是空间坐标,一对(x,y)(x,y)(x,y)上面对应的幅值fff叫做图像在这一点的强度或灰度。当xxx、yyy和fff是有限的离散数值的时候,就称这幅图像为数字图像。
2、初识MATLAB
MATLAB:美国人开发的一个十分牛逼的数学软件,主要功能有画图、图形处理、信号分析、无线通信……应用领域十分广泛,除此之外MATLAB内部函数都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理,所以十分高效(如果你写出了效率更高的代替函数,那请收下我的膝盖,绝对是大牛!!!)。而且在其中很多领域的应用都被做成了工具包,可视化成都极高,极大减少了科研周期。且其使用的语言简单易于快速上手。总而言之,是你学习、科研的一大利器!
二、言归正传——快速进入任务
1.软件安装
由于是付费软件,所以基本正规安装渠道就是安装学校或者公司的官方正版软件(按需安装各种工具包,随用随安装),此处不再赘述。
2.开始coding
首先,我们使用imread()函数读入目标图片,并使用imshow()函数显示目标图片。
% 读取原图并显示
Im = imread('1.jpg'); %读入图片(三通道RGB图像)
%subplot(4,4,1); %此处是为了后面显示方便,在一个页面中显示$4*4$张图
imshow(Im);
title('原图');
看一波效果:
至此,我们完成了任务1的一半:调用imread读入一张图片 以及任务2: 调用imshow直接显示图像。
a.插播一个小技巧
MATLAB之所以广受大家喜爱,主要还在与其友好的让使用者自学的功能设定。看别人代码函数不知道怎么办?不要着急,默默选中该函数,就像下图一样选中"imread""imread""imread",然后敲击键盘F1F1F1,查看帮助文档,快速掌握函数用法并且能够查看相关示例。所以MATLAB入门怎么办?看帮助文档!看帮助文档!!看帮助文档!!!
相同的办法,我们再查看"imshow""imshow""imshow"的帮助:
接着我们进行下一步操作:观察workspace中,内存变量的dimension和数据类型。
workspaceworkspaceworkspace在这里。目标图像AAA因为是彩色图像,具有RRR、GGG、BBB三个通道,所以数据大小是“373∗346∗3373*346*3373∗346∗3”的三维矩阵。数据类型是可显示的“uint8uint8uint8”类型。
点击AAA之后就可以看到矩阵AAA中的每个具体值。
然后,我们继续完成任务三:对图像的三个通道进行简单平均,得到单通道,并进行显示。共使用两种方法。
方法1:直接利用矩阵运算完成:
%方法1:mean函数求平均
tic
%R通道
R2 = A(:,:,1);
av = mean(R2,'all'); %此处是将二维数组转换成了一维数组,随后求平均
%fprintf('%f\n',av);
[r,c] = size(R2); %size分别获取矩阵的行、列数
for i = 1:rfor j = 1:cR2(i,j) = av;end
end
subplot(4,4,10);
imshow(R2);
title('矩阵平均—R通道');%G通道
G2 = A(:,:,2);
av = mean(G2,'all'); %此处是将二维数组转换成了一维数组,随后求平均
[r,c] = size(G2); %size分别获取矩阵的行、列数
for i = 1:rfor j = 1:cG2(i,j) = av;end
end
subplot(4,4,11);
imshow(G2);
title('矩阵平均—G通道');%B通道
B2 = A(:,:,3);
av = mean(B2,'all'); %此处是将二维数组转换成了一维数组,随后求平均
[r,c] = size(B2); %size分别获取矩阵的行、列数
for i = 1:rfor j = 1:cB2(i,j) = av;end
end
subplot(4,4,12);
imshow(B2);
title('矩阵平均—B通道');
toc
方法2:逐像素完成,使用两层for循环:
%方法二:逐像素完成三通道取平均
tic
R3 = double(A(:,:,1));
R4 = A(:,:,1);
a=0;
for i = 1:rfor j = 1:ca = a+R3(i,j)/r/c;end
end
%fprintf('%f\n',a);
for i = 1:rfor j = 1:cR4(i,j) = a;end
end
subplot(4,4,14);
imshow(R4);
title('像素平均—R通道');a = 0;
G3 = double(A(:,:,2));
G4 = A(:,:,2);
[r,c] = size(G3);
for i = 1:rfor j = 1:ca = a+G3(i,j)/(r*c);end
end
%fprintf('%f\n',a);
for i = 1:rfor j = 1:cG4(i,j) = a;end
end
subplot(4,4,15);
imshow(G4);
title('像素平均—G通道');a = 0;
B3 = double(A(:,:,3));
B4 = A(:,:,3);
[r,c] = size(B3);
for i = 1:rfor j = 1:ca = a+B3(i,j)/(r*c);end
end
%fprintf('%f\n',a);
for i = 1:rfor j = 1:cB4(i,j) = a;end
end
subplot(4,4,16);
imshow(B4);
title('像素平均—B通道');
toc
上运行结果图:
最后,按照任务要求,我们截取运行时间对比:
显而易见,直接利用矩阵完成各通道取平均比逐像素操作快了不少。MATLAB内置函数的运行效率之高、优化程度之高可见一斑。
至此,今日任务完成!
三、总结(划重点)
1、采用直接提取图像通道的方法,提取出的只是单通道分量,显示的图像为灰度图像:采用将所需通道保留,其余两通道置000的方式则可得到三通道图像,此时图像为彩色图像;
2、直接读取的单通道(eg:R=A(:,:,1)eg:R = A(:,:,1)eg:R=A(:,:,1))数据类型为uint8uint8uint8,在进行累加时最大不能超过255255255,所以使用遍历矩阵求平均时应当转换成doubledoubledouble类型进行计算,但是在进行显示的时候会出问题,所以应当对uint8类型的矩阵进行平均值赋值。
Q:在使用mean进行矩阵求平均时不会出现类型不对的问题……
答:因为内置函数已经进行了相关容错处理。
链接: 完整源码
ImageandVideoProcessingImage andVideo ProcessingImageandVideoProcessing, Li Sun, School of Communication
& Electronic Engineering, East China Normal University。 ↩︎冈萨雷斯,数字图像处理(第三版)。 ↩︎
一、Matlab图像处理入门相关推荐
- MATLAB图像处理入门
一.读写图像.直方图 1.读取并显示图像 imread与imshow函数 clc;clear; close all; I = imread('pout.tif'); imshow(I); 结果: 如果 ...
- Matlab 图像处理入门学习笔记—1.图片格式转换
前言:作为一个编程思维极弱的小白,就算是matlab的学习也稍有困难.但也想学好自己选择的路.从最简单的开始,记录学习,也算监督自己. 今天的笔记是图片格式转换,废话不说,直接上代码: a=512; ...
- Matlab图像处理入门教程(菜鸟级)
1,图像的读入和显示: (1)图像读入:A=imread('文件名',文件格式) [X,map]=imread('文件名') %X代表索引图像矩阵,map为颜色映射表 (2)图像显示:image(A) ...
- 图像处理入门和UltraLAB P620系列全能型、高性能、静音级便携工作站
一.图像处理的应用 1.身份认证 21世纪是刷脸的时代,这一点无可厚非.首先是银行,据说重庆的银行已经使用了人脸识别的验证系统来进行辅助的认证.其次是门禁系统,以前是指纹,虹膜,现在就是人脸.指纹.虹 ...
- c++图像处理入门教程
最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞.仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助.在 ...
- [转载] 图像处理入门教程
文章来源https://blog.csdn.net/u013088062/article/details/50425018 图像处理研究工具 图像处理的研究分为算法研究和应用两个部分.用到的主要编程语 ...
- 图像处理入门教程【转】
(转自:https://blog.csdn.net/u013088062/article/details/50425018) 版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 http ...
- TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作
文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作 实验要求 知识点 实验内容 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同 ...
- matlab图像处理——平滑滤波
平滑滤波--matlab图像处理 平滑滤波的目的是消除或尽量减少噪声,改善图像的质量.假设加性噪声是随机独立分布,这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰.从信号分析的观点来看,图像 ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
最新文章
- 一个API调用27个NLP预训练模型:BERT、GPT-2全囊括,像导入NumPy一样容易
- java 伪异步 netty,Netty(一) - 不死的达芬奇的个人空间 - OSCHINA - 中文开源技术交流社区...
- 缓冲区溢出-基本ROP-ret2syscall
- 中国冶金工业节能减排行业十四五投资动态与运营方向调研报告2022-2027年
- ASP.NET Core Blazor Webassembly 之 渐进式应用(PWA)
- Mysql中将查询出来的多列的值用逗号拼接
- android图片根据屏幕适配
- 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/Good Sync/Allway Sync)
- 空间解析几何 | 经典例题、李林880例题
- SolrCloud 初体验
- js return加分号_JavaScript 语句后应该加分号么?
- 姓氏排序程序 Js 版(小程序共享)
- 计算机平均数函数试题,计算机期末Excel表格题及二级考试常用函数
- MySQL使用大全和JDBC使用_五万字的详细笔记
- GoF设计模式(二)-行为型模式简介
- 清晰理解红黑树的演变---红黑的含义
- MATLAB矩阵的基本运算及操作
- 使用高通410随身WIFI搭建一个网盘影视网站的详细教程
- ansible主机清单和动态主机清单
- 轻量级CI/CD自动构建平台Gitea+Drone保姆级实践教程