使用matlab进行简单图像处理
实验资源:
实验要求:
使用matlab 读取Lena.bmp图像,并将其显示为:
1、原始图像
2、左右翻转的图像
3、上下翻转的图像
4、放大一倍的图像
5、显示其直方图
6、图像向右下方平移半个图像长宽的距离
没有以分号结尾的话就会显示出数据内容
读取图像并显示原始图像
lena=imread("e:\lena.bmp");
imshow(lena);
左右翻转的图像
lena2=flip(lena,2);
imshow(lena2);
上下翻转的图像
lena3=flip(lena);
imshow(lena3);
放大一倍的图像
lena4=imresize(lena,2);
imshow(lena4);
显示其直方图
h=histogram(lena,255)
不以分号结尾。
这是lena的直方图:
imshow(lena5)显示的是一个比lena要更亮一点的图片(直方图均衡化)
![](/assets/blank.gif)
![](/assets/blank.gif)
图像向右下方平移半个图像长宽的距离
原理版:
% lena=imread("e:\lena.bmp");[R, C] = size(lena); % 获取图像大小
res = zeros(R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
delX = 128; % 平移量X 原始图像的一半直接256/2指定128了,% delX = R/2; % 平移量X% delY = C*0.5; % 平移量Y,这些写法都可以
delY = 128; % 平移量Y
tras = [1 0 delX; 0 1 delY; 0 0 1]; % 平移的变换矩阵 for i = 1 : Rfor j = 1 : Ctemp = [i; j; 1];temp = tras * temp; % 矩阵乘法x = temp(1, 1);y = temp(2, 1);% 变换后的位置判断是否越界if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)res(x, y) = lena(i, j);endend
end;imshow(uint8(res)); % 显示图像
函数版:
se=translate(strel(1),[128 128]);%构造结构元素
res=imdilate(lena,se);%形态学膨胀
figure;%显示图片框,以下内容都会显示在里面
subplot(1,2,1),subimage(lena);
title('orginal image');
subplot(1,2,2),subimage(res);
title('translate image');
figure;命令显示的变换后图片。
这个版本的命令很简洁的样子,查阅一下其中的关键函数
translate 参考:https://ww2.mathworks.cn/help/matlab/ref/polyshape.translate.html
strel 参考:https://blog.csdn.net/qq_36792959/article/details/98979959
https://blog.csdn.net/qwerasdf_1_2/article/details/54376657
imdilate 参考:http://www.ece.northwestern.edu/support/local-apps/matlabhelp/toolbox/images/imdilate.html
https://www.mathworks.com/help/images/ref/imdilate.html
相关原理:
当我们直接使用translate对lena进行操作时会报错,translate支持的是
输入 polyshape
,指定为标量、向量、矩阵或多维数组。
数据类型: polyshape
strel(shape,parameters)。shape为形状参数,即设置什么样的结构元素;parameters为控制形状参数大小方向的参数。
SE =STREL('arbitrary',NHOOD) 创建一个指定邻域的平面结构化元素。NHOOD是一个包含1/0的矩阵;1的位置定义了邻域的形态学操作。NHOOD的中心就是它的中心元素,位置在FLOOR((SIZE(NHOOD) + 1)/2)。你也可以忽略参数串'arbitrary'而只使用STREL(NHOOD)。
随后实验证明strel(n)(n>1)都是和1一样的邻域大小
J
= imdilate(I
,SE
)
扩大灰度,二进制或打包二进制(packed binary image)图像I
,bmp是bitmap,返回扩大图像J
。SE
是由strel
或offsetstrel
函数返回的结构元素对象或结构元素对象的数组 。
J
= imdilate(I
,nhood
)
扩展图像I
,其中nhood
是多个0
和多个1
的矩阵,指定结构元素邻域。imdilate
确定邻域的中心元素floor((size(nhood)+1)/2)
。
这个语法相当于 imdilate(I,
strel(nhood))
个人猜想:
以上思路就应当是想要使用translate 但是图像不是polyshape结构,所以先创造一个通用的结构元素(类似于java里的object),进行平移后再使用形态学函数填充结构元素。
在查阅上述原理的时候,由translate想到有没有支持通用图像的平移函数呢?毕竟是强大的matlab
果然找到了!
imtranslate
参考文档:
https://www.mathworks.com/help/images/ref/imtranslate.html
一步到位版:
lena6 = imtranslate(lena,[128, 128],'FillValues',255);%底色填充为白色
lena6 = imtranslate(lena,[128, 128],'FillValues',0);%底色填充为黑色>> [R, C] = size(lena); % 获取图像大小
>> lena6 = imtranslate(lena,[R*0.5,C*0.5],'FillValues',0);
>> imshow(lena6);
支持的输入参数(要转换的图像)
指定为任何类的非稀疏数值数组,除了uint64
和int64
,或逻辑数组。
数据类型:single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
|logical
简单而快乐~
使用matlab进行简单图像处理相关推荐
- matlab将图像用傅里叶旋转,用matlab实现数字图像处理几个简单例子.doc
用matlab实现数字图像处理几个简单例子.doc 实验报告实验一 图像的傅里叶变换(旋转性质)实验二 图像的代数运算实验三 filter2 实现均值滤波实验四 图像的缩放朱锦璐04085122实验一 ...
- 基于matlab 论文知网,基于MATLAB的校园图像处理与分析
内容介绍 原文档由会员 jiji888 发布 基于MATLAB的校园图像处理与分析 2.13万字 我自己原创的毕业设计,今年最新的,仅在本站独家提交,大家放心使用 摘要 随着计算机科学技术的不断发展以 ...
- 基于matlab生物医学影像处理,基于MATLAB的医学图像处理
基于MATLAB的医学图像处理 届 别 2012 届 学 号 200814350135 毕业设计(论文)基于 MATLAB 的医学图像处理姓 名 唐 涛 系 别 . 专 业 计 算 机 科 学 系 . ...
- 基于MATLAB的数字图像处理系统设计
一.课题背景 MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理想开发工具. 笔者阐述了一种基于MATLAB的数字图像处理系统设计 ...
- 基于MATLAB的数字图像处理的设计与实现 转
基于MAT [摘要]数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通 ...
- 【基于MATLAB的数字图像处理】第四章·图像增强
系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...
- MATLAB摄像头实时图像处理
(来点有用的)MATLAB摄像头实时图像处理 第一步:安装硬件支持包 第二步:获取摄像头信息 第三步:数据实时处理 最后 by HPC_ZY 第一步:安装硬件支持包 打开附加功能项 查找如下摄像头支持 ...
- Matlab 常用的图像处理方法
文章目录 Matlab 常用的图像处理方法 RGB转灰度 噪声添加 滤波 中值滤波 均值滤波 sobel算子处理 图像形态学运算 Reference Matlab 常用的图像处理方法 RGB转灰度 R ...
- matlab图像处理将两个目标合成一个,利用MATLAB实现医学图像处理与分析
[实例简介] 利用MATLAB实现医学图像处理与分析边缘是图像最基本的特征.所谓边缘是指图像周围像素灰度有阶跃变化或屋顶状变化的像素的集合, 它存在于目标与背景.目 标与目标.区域与区域.基元与基元之 ...
- 基于MATLAB的简单手势识别
匆匆在看完了MOOC的<数字图像处理>,为了巩固所学,做了一个简单的手势识别(只能识别手势1.2.3)! 0.安装硬件支持包软硬件安装 0.1.MATLAB R2021b安装 软件包下载地 ...
最新文章
- 面经:为了拿到字节跳动offer,鬼知道我经历了啥...
- 实时音视频互动系列(上):又拍云UTUN网络详解
- Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03
- Python编程高手之路——第二章:流程控制
- 2019安卓机皇已定?三星Note10系列被曝将在8月10日发布
- fpga运算服务器_SparseArray替代HashMap来提高性能
- 蚂蚁财富号:大、小型基金公司的电商业务对比
- 利用Tushare合成期货主力连续数据
- 深入理解二进制 算法必备底层知识
- C51单片机控制蜂鸣器
- iOS Design Patterns Excerpt
- 病毒木马入侵招数大曝光
- 雄厚实力的企业支持,是拍账王品牌前进发展的根基
- 如何绘制好看的大脑皮层图?wb_view +fun.gii格式操作
- 14.spring aop之aspect切入点语法详解
- AI如何挑战传统翻译
- Mapped Statements collection does not contain value for 解决方法之一
- 华为手机在萤石云上设置权限_华为手机摄像头权限如何设置
- python支持char数据类型吗_python有char类型吗,
- 桌上有一只盘子,每次只能放入一个水果。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。
热门文章
- 本科最高5w!毕业生落户指南!18城市人才引进补贴
- 微信小程序发送微信公众号模板消息
- html透明度从零到1,CSS过渡不透明度仅从0到1,或其他过渡效果
- 阿里云周明:因云而生的基础设施
- MacBook 自带输入法 中英文切换 搜狗输入法 安装 配置
- MAC安装中文输入法Rime
- 转:如何理解阿里月饼事件中各方的表现
- PHP, 将 PDF/Word/PPT 文档转换成图片生成长图
- RS485MODBUS转PROFINET网关配置-科隆OPTIFLUX7000MODBUS通信协议电磁流量计接入西门子PLC S7-1500PROFINET以太网通讯网络配置方法
- 女程序员年薪45万外加两套房,一日相亲两次,网友:找得到才怪