文章目录

  • 前言
  • 一、实验目的
  • 二、实现原理
  • 三、算法设计
    • 3.1利用imread( )函数读取图像
    • 3.2 分别显示图像的红、绿和蓝色分量的强度
    • 3.3 将图像转换为灰度图,显示灰度结果图像进行对比
    • 3.4根据图像特征设计灰度变化曲线,实现灰度拉伸算法,显示拉伸前后图像对比图并进行分析。
      • 四、灰度拉伸理论补充

前言

本次图像处理是以matlab为处理工具开展的。仅说明图像处理的作用,一些图像处理的基本操作,实现原理和实现过程进行阐述。首先是进行图像的读取、存储和显示等。


一、实验目的

1、如何利用 MATLAB 来获取图像的大小、颜色、高度、宽度等等相关信息。
2、在 MATLAB 中如何读取图像

二、实现原理

一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。
因此在处理图像之前,要先提取图片信息,其信息不仅仅存在于宽度高度,颜色分量也是十分重要的。

灰度化算法(这里不阐述说明什么是灰度化)
灰度化一般有三种处理方式,

(1)分量法:将R、G、B其中的一个分量的大小作为该像素点的灰度大小,根据需要选择其中一种使用。
(2)最大值法:将R、G、B的大小都取3个值中的最大值
(3)平均值法:取R、G、B三个值的平均大小
(4)加权平均法:取R、G、B三个值的加权平均大小

三、算法设计

本次实验的图片如下:


3.1利用imread( )函数读取图像

image=imread('shiyan.jpg');%读取图像
imshow(image);%显示图像

图像进行了读取后对图像进行了显示,观察matlab工作区,图像为440x820x3 uint8型。


3.2 分别显示图像的红、绿和蓝色分量的强度

RGB = imread('shiyan.jpg');%读取图片并命名
subplot(2,2,1),imshow(RGB(:,:,1)),title('R分量');%读取R分量并显示
subplot(2,2,2),imshow(RGB(:,:,2)),title('G分量');%读取G分量并显示
subplot(2,2,3),imshow(RGB(:,:,3)),title('B分量');%读取B分量并显示
subplot(2,2,4),imshow(RGB),title('RGB');%显示原图


3.3 将图像转换为灰度图,显示灰度结果图像进行对比

a=imread('shiyan.jpg');%读取图像
[x,y,z]=size(a);   %得到原来图像的矩阵的参数
imagemax=ones(x,y);    %初始化最大化灰度图像为全1矩阵
for i=1:xfor j=1:yimagemax(i,j)=max(a(i,j,:));end
end  %取最大值
a(:,:,1)=imagemax;
a(:,:,2)=imagemax;
a(:,:,3)=imagemax;%赋最大值[c1,c2,c3]=size(a);%读取数据
b=zeros(c1,c2);%创建全0矩阵
b=uint8(b);%定义类型
for i=1:c1for j=1:c2sum=0;for k=1:c3sum=sum+a(i,j,k)/3;%取平均endb(i,j)=sum;%将平均值赋值给bend
end
figure(1);
subplot(2,2,1),imshow(a),title('原图');
subplot(2,2,2),imshow(b),title('平均值灰度图');
subplot(2,2,3),imshow(a);title('最大值灰度图')

此处不太明显,但仔细观察可看出,在取最大值之后,图像灰度明显更加亮,既对比度更高,而取平均值趋于中等。

3.4根据图像特征设计灰度变化曲线,实现灰度拉伸算法,显示拉伸前后图像对比图并进行分析。


四、灰度拉伸理论补充

灰度拉伸又叫对比度拉伸,它是一种常见的灰度值线性变换,即使用线性函数对灰度值不同等级的灰度区域进行分段调节。

灰度拉伸的主要目的是提高图像处理时灰度值的大小区间,使得原图像的灰度值大小扩充至整个灰度级别的区间内,即0至255之间。

车辆图像灰度拉伸是指依照车辆灰色图像的灰度直方图的灰度分布将整个车辆图像的灰度值进行调整,使调整后的车辆灰度值区间扩大到0至255。

例:图片中部分像素点的灰度值未达到255,假设灰度范围为0-150,此时我进行灰度拉伸,将150认为是255,进行一个缩放。
但是直接线性缩放和原图相差无几,是没有意义的,此时进行分段区间进行缩放,能够提高对比度。我可以将140-150部分进行一个线性缩放,60-140再进行一个比例的缩放,最后0-60进行一个缩放。

此处若是不太明晰,可以加我QQ:2745498610进行探讨。


代码实现:

image=imread('shiyan.jpg');    %导入图像
im=rgb2gray(image);          %图像灰度化
image=im2double(image);      %将图像转为double型
[n,m]=size(im);              %将图像矩阵化
x=1;y=1;
a=60;b=165;c=90;d=210;        %设置期望灰度区间a-b;c-d
j=[0,a,b,255];k=[0,c,d,255];
figure(1);plot(j,k);          %输出期望区间的折线图形
for x=1:nfor y=1:mif(im(x,y)<=a)imagebh(x,y)=im(x,y)*(c/a);elseif(im(x,y)>a&&im(x,y)<=b)imagebh(x,y)=((d-c)/(b-a))*[im(x,y)-a]+c;else(im(x,y)>b);imagebh(x,y)=((255-d)/(255-b))*[im(x,y)-b]+d;endend
end                        %两个嵌套的for循环进行x,y的矩阵参数筛选
figure(2);
subplot(121);
imshow(im);                %输出原图
title('原图')
subplot(122);
imshow(imagebh);            %输出变换的图像
title('变换后图像');

参数可根据图片对比度需要自行修改

由代码的a,b,c,d区间取值可得figure1的分段线性变换折线关系,从中可得,当我们在取得一定的区间以后,可以使得灰度图像在进行灰度图像拉伸以后,可以突出一部分的色彩对比度,从而实现图像的部分质量增强。在多次调试选定之后,最终将区间选择在了(60,165),(90,210)

数字图像处理基础(matlab)Ⅰ:图像读取,显示等相关推荐

  1. 图像处理之Matlab图像读取

    说到图像处理,第一步就是图像读取.Matlab最简单的就是imread函数,本节介绍imread的用法以及容易出错的地方 正如上图所示,在Matlab文档中,imread包括以上几种用法,但并不要求都 ...

  2. (6)Air Band数字图像处理基础-对图像进行几何变换

    本文可视为<Visual.C++数字图像处理开发入门与编程实践>读书笔记 由于部分图片和公式难以打出,使用截图的方式呈现.

  3. 数字图像几何变化matlab,【新书推荐】数字图像处理——使用MATLAB分析与实现

    原标题:[新书推荐]数字图像处理--使用MATLAB分析与实现 数字图像处理是现代信息处理的研究热点.教材基于大学教学特点.目的编写,介绍数字图像处理的基本原理.算法分析和实现.章节内容由浅入深,层次 ...

  4. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  5. 【图像处理】数字图像处理基础(分辨率,像素,显示...)

    Table of Contents 1.数字图像处理基础 1.1 图像表示1.1.1 图像成像模型1.1.2 数字图像的表示a.图像采样b.图像灰度的量化c.算比特数 1.2 分辨率1.2.1 空间分 ...

  6. 数字图像处理的Matlab实现(1)—绪论

    第1章 绪论 1.1 什么是数字图像处理 一幅图像可以定义为一个二维函数\(f(x,y)\),这里的\(x\)和\(y\)是空间坐标,而在任意坐标\((x,y)\)处的幅度\(f\)被称为这一坐标位置 ...

  7. 数字图像处理之matlab大作业:自制图像处理小工具

    学习的过程向来不是容易的,创造一个作品的过程更是不容易的.因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行.在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添 ...

  8. 2 - 数字图像处理基础

    数字图像基础 人类视觉系统 人眼视觉模型 视觉过程 人眼视觉特性 图像的表示 图像的溯源 连续图像函数 图像种类 图像感知和获取 数字图像的分辨率 综合考虑 像素间的基本关系 相邻像素 邻接性.连通性 ...

  9. 基于小波变换的数字图像处理(MATLAB源代码)

    基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc; M=256;%原图像长度 N=64; %水印长度 [filename1,pathname]=ui ...

  10. 数字图像处理(MATLAB)(第二版) 冈萨雷斯 学习笔记

    数字图像处理(MATLAB)(第二版) 冈萨雷斯 主要用来记录自己的学习过程,相关实验内容,便于日后查找相关知识点及复习所用 第二章 灰度变换和空间滤波 本章重点讨论两类空间域处理方法:亮度(或灰度) ...

最新文章

  1. flask服务器端解析文件包时出现问题,flask + celery 遇到的那些坑
  2. 多样性计算时代,怎样的技术生态才能满足发展需求
  3. 如何避开项目管理陷阱?
  4. mysql解压版怎么退出_mysql-8.0.15-winx64 解压版安装教程及退出的三种方式
  5. 台式电脑如何设置开机密码_设置苹果Mac电脑的开机密码-macw资讯
  6. [转]汇编语言的准备知识--给初次接触汇编者 3
  7. flask request类
  8. 20170521第三讲
  9. Linux—磁盘和文件系统管理(二)
  10. win10下JDK安装,配置环境变量后出现error:could not open '...jvm.cfg'
  11. 一道学吧上的题 ^ 题目:不允许重复的实验 - 从数字1、2、3、4、5中随机抽取3次数字(不允许重复)组成一个三位数,则其各位数字之和等于n的概率为________ 输入整数 输出一个小数(保留
  12. GBA模拟器 v1.8官方简体中文版
  13. 惠普台式计算机怎么拆外壳,hp台式电脑cpu风扇怎么拆图解
  14. Deepin20(1002版本)安装LBP2900打印机
  15. 阿里腾讯大裁员,中概股暴跌!没病千万别去互联网公司......
  16. 六度分离(hdu1869,floyd最短路)
  17. GD32F4xx创建工程
  18. linux删除eth2设备_如何添加删除子网卡eth0:1(linux案例)
  19. 阅文 java面试题,阅文笔试:讲讲servlet的生命周期
  20. 02-QMainWindow

热门文章

  1. 思科员工离职恶意删除456个虚拟机,造成240w美元直接损失,或面临5年有期徒刑
  2. RAID——磁盘阵列
  3. 【SpaceClaim】SCDM中pull拉伸切除会将原来的实体全部清除,无法执行局部切除操作
  4. 利用 Web Share API 将网页分享到 App(上)
  5. 【游戏设计】从星露谷物语中学习游戏制作
  6. 固建机器人建筑钢结构设备生产厂家一体化工作站,推动钢结构产业发展
  7. 磁盘划分空间提示磁盘上没有足够的空间完成此操作,使用傲梅分区助手解决
  8. html css点击展开列表,html+js+css实现点击展开显示
  9. Kotlin基础第4章—类型同步
  10. SpringBoot2.0深度实践学习手记