数字图像处理实验记录一(图像基本灰度变换)

文章目录

  • 基础知识
    • 图像是什么样的?
    • 1,空间分辨率,灰度分辨率
    • 2,灰度图和彩色图的区别
    • 3,什么是灰度直方图?
  • 实验要求
    • 1,按照灰度变换曲线对图像进行灰度变换
    • 2,读入一幅图像,分别对其进行求反变换、对数变换和幂次变换。并显示原图像和变换后图像。
  • 实验记录
    • 任务一:
    • 任务二:
      • 反转变换:
      • 对数变换:
      • 幂次变换:
  • 结果展示
    • 结果1:
    • 结果2:
      • 反转变换:
      • 对数变换:
      • 幂次变换:
  • 反思,总结与收获
    • 1,在matlab中让几幅图片在一个窗口显示
    • 2,title(' ') 标题
    • 3,uint8
    • 4,im2double()函数
    • 5,matlab判断语句怎么写
    • 6,matlab 循环语句怎么写
    • 7,清空命令行

基础知识

第一次接触这方面的知识,一开始有点措手不及,过了很久才慢慢了解

图像是什么样的?

在matlab中使用imread()函数读取一副彩色图像后我们得到了以下的矩阵
在这里插入图片描述
在计算机中,图像就是以这种形式保存的。

1,空间分辨率,灰度分辨率

空间分辨率:图像中可分辨的最小细节,由采样间隔值决定,看起来对清晰度有影响
在这里插入图片描述

灰度分辨率:灰度级别中可辨别的最小变化,感觉是黑白色之间过渡的级别
灰度分辨率越小,越黑白

在这里插入图片描述

2,灰度图和彩色图的区别

彩色图:每个像素由R,G,B三个分量表示,用三个二维矩阵分别表示各个像素的R,G,B三个颜色分量。
灰度图:每个像素只有一个采样颜色,所以用一个二维矩阵来表示各个像素的采样颜色。

3,什么是灰度直方图?

在这里插入图片描述
由此可见,进行灰度变换就是改变灰度值

实验要求

1,按照灰度变换曲线对图像进行灰度变换

在这里插入图片描述

2,读入一幅图像,分别对其进行求反变换、对数变换和幂次变换。并显示原图像和变换后图像。

实验记录

任务一:

在这里插入图片描述

了解了以上的知识后,这个图也能够看懂了
原图的灰度曲线应该是这个样子的:
在这里插入图片描述
是一条过原点斜率为1的曲线

通过以下操作可以将其变成要求的曲线

%分段
x0=0;y0=0;
x1=48;y1=23;
x2=196;y2=216;
x3=255;y3=255;%算变换斜率
a1=(y1-y0)/(x1-x0);
a2=(y2-y1)/(x2-x1);
a3=(y3-y2)/(x3-x2);
I2 = I1;
[height,width] = size(I1) %得出图片的高,宽
for row = 1:1:height      %遍历图片矩阵for col = 1:1:widthtmp = I2(row,col);if(tmp < x1)I2(row,col) = a1*tmp;elseif(tmp>=x1&tmp<x2)I2(row,col) = a2*(tmp-x1)+y1;elseI2(row,col) = a3*(tmp-x2)+y2;endend
end
plot(x,y);
hold on
plot([0 x1],[y1 y1],'r--') %画线
plot([x1 x1],[0 y1],'r--') %画线plot([0 x2],[y2 y2],'r--') %画线
plot([x2 x2],[0 y2],'r--') %画线hold off

在这里插入图片描述

接下来我们就可以通过以上步骤对图像进行操作:

%分段
x0=0;y0=0;
x1=48;y1=23;
x2=196;y2=216;
x3=255;y3=255;%算变换斜率
a1=(y1-y0)/(x1-x0);
a2=(y2-y1)/(x2-x1);
a3=(y3-y2)/(x3-x2);
I2 = I1;
[height,width] = size(I1) %得出图片的高,宽
for row = 1:1:height      %遍历图片矩阵for col = 1:1:widthtmp = I2(row,col);if(tmp < x1)I2(row,col) = a1*tmp;elseif(tmp>=x1&tmp<=x2)I2(row,col) = a2*(tmp-x1)+y1;elseI2(row,col) = a3*(tmp-x2)+y2;endend
end

展示结果代码:
在这里插入图片描述

subplot(221);imshow(I1);title('灰度图');
subplot(222);imhist(I1);title('灰度直方图');subplot(223);imshow(I2);title('灰度变换后图');
subplot(224);imhist(I2);title('灰度直方图');

任务二:

反转变换:

把黑变成白,把白变成黑
公式:
在这里插入图片描述
L是灰度级,一般是256

H=imread('山.png');
Hi = 255-H;
subplot(324);imshow(Hi);title('求反变换');

对数变换:

在这里插入图片描述
在这里插入图片描述

I=imread('山.png');
c = 1 %对数因子
I1 = im2double(I);
I3 = uint8(c*log(1+I1*255)/log(256)*255);
subplot(121);imshow(I);title('原图');
subplot(122);imshow(I3);title('对数变换图');

幂次变换:

公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

gamma = 2.5; % 幂次参数,可根据需要调整
Hgam = c*im2double(H).^gamma;
subplot(326);imshow(Hgam);title('幂次变换');

结果展示

结果1:

在这里插入图片描述

结果2:

反转变换:

在这里插入图片描述

对数变换:

在这里插入图片描述

幂次变换:

在这里插入图片描述

反思,总结与收获

1,在matlab中让几幅图片在一个窗口显示

subplot(121);imshow(I);title('原图');
subplot(122);imshow(Hgam);title('幂次变换图');

subplot(a,b,c);将窗口分割成a行b列后,这个图片在序号为c的位置
序号排序如下:
在这里插入图片描述
注意:subplot()函数里面的参数要加,分隔,我没有分隔,是坏习惯

2,title(’ ') 标题

在’'之间添加文本就可以显示标题了

3,uint8

图像矩阵的数据类型一般是uint8,无符号8位整型数据

4,im2double()函数

将图的uint8矩阵转成double矩阵,要注意的是,这个函数一般会将原来uint8数据从0~255范围映射到0~1范围,所以当你想把它重新转成uint8的时候要乘255

5,matlab判断语句怎么写

if(条件)...
elseif(条件)
...
else
...
end

6,matlab 循环语句怎么写

for i = 1:7		%这个代表了从17,每次递增1
...
endfor i = 0:2:8   %这个代表了从08,每次递增2
...
end

7,清空命令行

% 在脚本里加入以下语句,在每次运行时会清空命令行
clear all;
clc;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派玩转openwrt软路由:5.OpenWrt防火墙配置及SSH连接

1、SSH配置 打开System -> Administration&#xff0c;打开SSH Access将Interface配置成unspecified。 如果选中其他的接口表示仅在给定接口上侦听&#xff0c;如果未指定&#xff0c;则在所有接口上侦听。在未指定下&#xff0c;所有的接口均可通过SSH访问认证。 2、防火…

给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0(一)

ChuanhuChatGPT 拥有多端、比较好看的Gradio界面&#xff0c;开发比较完整&#xff1b; 刚好讯飞星火非常大气&#xff0c;免费可以领取大概20w&#xff08;&#xff01;&#xff01;&#xff01;&#xff09;的token&#xff0c;这波必须不亏&#xff0c;整上。 重要参考&am…

MySQL——源码安装教程

MySQL 一、MySQL的安装1、RPM2、二进制3、源码 二、源码安装方式三、安装过程1、上传源码包2、解压当前文件并安装更新依赖3、对MySQL进行编译安装 四、其他步骤 一、MySQL的安装 首先这里我来介绍下MySQL的几种安装方式&#xff1a; 一共三种&#xff0c;RPM安装包、二进制包…

将Excel表中数据导入MySQL数据库

1、准备好Excel表&#xff1a; 2、数据库建表case2 字段信息与表格对应建表&#xff1a; 3、实现代码 import pymysql import pandas as pd import openpyxl 从excel表里读取数据后&#xff0c;再存入到mysql数据库。 需要安装openpyxl pip install openpyxl# 读入数据&#x…

ETL数据转换方式有哪些

ETL数据转换方式有哪些 ETL&#xff08;Extract&#xff0c; Transform&#xff0c; Load&#xff09;是一种常用的数据处理方式&#xff0c;用于从源系统中提取数据&#xff0c;进行转换&#xff0c;并加载到目标系统中。 数据清洗&#xff08;Data Cleaning&#xff09;&am…

中断机制-中断协商机制、中断方法

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: 4.1.2 什么是中断机制 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止&#xff0c;自己来决定自己的命运&#xff0c;所以&#xff0c;…

项目管理工具的功能与帮助一览

项目管理的概念并不新鲜&#xff0c;但是伴随着技术解决方案的出现&#xff0c;项目管理工具帮助企业建立规范科学的管理流程&#xff0c;为企业的管理工作提供助力。 Zoho Projects 是一款适合全行业的标准化项目管理工具&#xff0c;它提供了重要的功能&#xff0c;如任务列…

ruoyi 若依 前端vue npm install 运行vue前端

1. 安装jdk ​​​​​​​https://blog.csdn.net/torpidcat/article/details/90549551 2. nginx 3. mysql 4. redis 首次导入&#xff0c;需要先执行 npm install #进入到前端模块目录下 cd ruoyi-ui # 安装 npm install 启动后端项目 运行前端项目&#xff1a;运行成功…

时序数据库InfluxDB了解

参考&#xff1a;https://blog.csdn.net/u014265785/article/details/126951221

【Pytorch】深度学习之优化器

文章目录 Pytorch提供的优化器所有优化器的基类Optimizer 实际操作实验参考资料 优化器 根据网络反向传播的梯度信息来更新网络的参数&#xff0c;以起到降低loss函数计算值&#xff0c;使得模型输出更加接近真实标签的工具 学习目标 Pytorch提供的优化器 优化器的库torch.opt…

JVM:虚拟机类加载机制

JVM:虚拟机类加载机制 什么是JVM的类加载 众所周知&#xff0c;Java是面向对象编程的一门语言&#xff0c;每一个对象都是一个类的实例。所谓类加载&#xff0c;就是JVM虚拟机把描述类的数据从class文件加载到内存&#xff0c;并对数据进行校验&#xff0c;转换解析和初始化&a…

【yolov5】改进系列——特征图可视化(V7.0 的一个小bug)

文章目录 前言一、特征图可视化1.1 V7.0的小bug 二、可视化指定层三、合并通道可视化总结 前言 对于特征图可视化感兴趣可以参考我的另一篇记录&#xff1a;六行代码实现&#xff1a;特征图提取与特征图可视化&#xff0c;可以实现分类网络的特征图可视化 最近忙论文&#xf…

使用JAVA发送邮件

这里用java代码编写发送邮件我采用jar包&#xff0c;需要先点击这里下载三个jar包&#xff1a;这三个包分别为&#xff1a;additionnal.jar&#xff1b;activation.jar&#xff1b;mail.jar。这三个包缺一不可&#xff0c;如果少添加或未添加均会报下面这个错误&#xff1a; C…

School‘s Java test

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;第四周素数和念整数 &#…

导入Maven项目遇到的一些问题及解决

开发工具是IDEA&#xff0c; 一个Maven项目初次导入IDEA中&#xff0c;需要注意的几件事&#xff1a; 设置项目的编码格式&#xff08;或者提前设置全局的编码格式&#xff09;&#xff0c;一般是UTF-8&#xff1b;检查JDK版本和编译级别&#xff1b;检查Maven的版本&#xf…

公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用

当企业需要进行大数据可视化看板的设计和开发时&#xff0c;除了Excel&#xff0c;还有许多其他强大且适合大数据可视化的软件工具。以下是几种常用的好用软件&#xff0c;以及它们的特点和优势&#xff0c;供您参考。 一、Datainside 特点和优势&#xff1a; - **易于使用**…

C++类总结

参考&#xff1a; C中的private, public, protected_c private-CSDN博客https://www.cnblogs.com/corineru/p/11001242.html C 中 Private、Public 和 Protected 的区别 Private Public Protected 声明为private类成员只能由基类内部的函数访问。 可以从任何地方访问声明…

# Web server failed to start. Port 9793 was already in use

Web server failed to start. Port 9793 was already in use. 文章目录 Web server failed to start. Port 9793 was already in use.报错描述报错原因解决方法Spring Boot 修改默认端口号关闭占用某一端口号的进程关闭该进程 报错描述 Springboot项目启动控制台报错 Error st…

使用Plotly可视化

显示项目受欢迎程度 改进图表 设置颜色&#xff0c;字体

尿检设备“智能之眼”:维视智造推出MV-MC 系列医疗专用相机

​ 尿液分析是临床检验的基础常规项目&#xff0c;随着医疗设备的不断发展&#xff0c;尿液分析相关仪器的国产化和自动化程度也进一步提升。2022 年国内尿液分析市场的规模约为 28 亿元&#xff0c;激烈的竞争推动了尿检仪器自动化、智能化升级&#xff0c;在仪器中加入机器视…