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

news2024/11/15 22:25:14

文章目录

  • 基础知识
    • 图像是什么样的?
    • 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:width
        tmp = I2(row,col);
        if(tmp < x1)
            I2(row,col) = a1*tmp;
        elseif(tmp>=x1&tmp<x2)
            I2(row,col) = a2*(tmp-x1)+y1;
        else
            I2(row,col) = a3*(tmp-x2)+y2;
        end
    end
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:width
        tmp = I2(row,col);
        if(tmp < x1)
            I2(row,col) = a1*tmp;
        elseif(tmp>=x1&tmp<=x2)
            I2(row,col) = a2*(tmp-x1)+y1;
        else
            I2(row,col) = a3*(tmp-x2)+y2;
        end
    end
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
...
end

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

7,清空命令行

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

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

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

相关文章

使用python查找指定文件夹下所有xml文件中带有指定字符的xml文件

文件夹目录如下&#xff08;需要递归删除文件夹下的.DS_Store文件&#xff09;&#xff1a; labels文件夹下面是xml文件&#xff1a; import os import os.pathpath "name/labels" files os.listdir(path) # 得到文件夹下所有文件名称 s []for xmlFile in files:…

成为领导心腹:新入行的测试人员,如何快速提升自己的影响力?

作为一名新入行的测试人员&#xff0c;如何提高自己在工作中的影响力呢&#xff1f;可能有人会问了&#xff1a;“测试人员不是只要安分守己的做好自己的测试工作不就行了吗&#xff1f;又不是当管理者&#xff0c;为什么要提高影响力呢&#xff1f;”说实话&#xff0c;我刚入…

“比特币震荡中的秘密信号?技术分析揭示最近走势的关键!“

技术分析 比特币维持在 27,000 美元的支撑位&#xff0c;甚至在此价格水平上形成了新的更高低点。这标志着一个非常有利的发展&#xff0c;表明每小时和每日时间框架上的看涨趋势。 然而&#xff0c;当考虑每周和每月的观点时&#xff0c;我们仍然遇到阻力&#xff0c;这可以…

【开源系统开发框架】:一招高效实现办公流程化发展!

实现高效化办公是很多职场人的愿望。毕竟这能提高企业的办公效率&#xff0c;高效利用内部资源&#xff0c;创造顺畅无阻的流程化办公&#xff0c;因此也成为很多企业的追求。什么样的平台软件可以助力实现&#xff1f;低代码技术平台的优势多&#xff0c;轻量级、易操作、简单…

陀螺仪传感器解读-Gyro Acce,1

加速度计和陀螺仪的简介 https://www.cnblogs.com/zdxgloomy/articles/4171937.html 加速度计和陀螺仪的使用指南 &#xff0c;代码部分 https://www.amobbs.com/forum.php?modviewthread&tid5510930&_dsign972b156c 模拟加速度计: 1. Accelerometer prinicple. 加…

Python 图形化界面基础篇:将应用程序打包为可执行文件

Python 图形化界面基础篇&#xff1a;将应用程序打包为可执行文件 引言 PyInstaller 简介步骤1&#xff1a;安装 PyInstaller 步骤2&#xff1a;创建 Python GUI 应用程序步骤3&#xff1a;使用 PyInstaller 打包应用程序 完整示例代码解释结论 引言 在开发完一个图形用户界面…

Docker 基础

一、快速入门&#xff1a; 1.Docker的安装 安装docker引擎 官方网址&#xff1a;Install Docker Engine on CentOS | Docker Docs 朋友们&#xff0c;有坑&#xff0c;千万不要用官方的仓库&#xff0c;就是下面这一步 记得用国内的镜像源&#xff1a; yum-config-manager …

Sectigo有便宜的泛域名SSL证书吗

Sectigo是国际性的CA认证机构&#xff0c;在多个国家设有分支机构和办事处&#xff0c;为了提高SSL证书的审核速度&#xff0c;Sectigo成立了亚太审核中心&#xff0c;快速审核国内的SSL证书申请&#xff0c;为客户提供全方位的数字证书和网络安全解决方案。Sectigo的使命是通过…

纸巾餐盒经营配送小程序商城的作用是什么

对餐饮行业来说&#xff0c;纸巾餐盒消耗非常快&#xff0c;需求比较旺盛&#xff0c;对普通家庭/食堂来讲也有较高的需求&#xff0c;可以说是必需品。也因此&#xff0c;市场中纸巾餐盒厂家及经销商不少&#xff1a; 1、拓客难、品牌传播难 纸巾餐盒可以零售也可以批发&…

linux安装java环境(jdk安装,java安装,通过安装包方式)

1&#xff1a;官网下载jdk-8u381-linux-x64.tar.gz安装包https://www.oracle.com/java/technologies/downloads/#java8 2&#xff1a;复制安装包到/opt目录下&#xff0c;使用命令解压安装包 tar -xvf jdk-8u341-linux-x64.tar.gz3&#xff1a;要在 /usr 目录下创建一个软链接…

@MultipartConfig注解

前言&#xff1a; 在学习Javaweb的Servlet文件上传和下载的过程中&#xff0c;我们会遇到一个特殊的注解---MultipartConfig。 MultipartConfig的适用情况&#xff1a; 1.文件上传: 当您的应用程序需要接收用户上传的文件时&#xff0c;可以在相应的 Servlet 上使用 Multipart…

一种超轻量级神经网络加速器实现

一 目标 针对资源受限&#xff0c;SWaP敏感的边缘计算应用场景&#xff0c;探索稳健而高效的计算架构&#xff0c;算法和应用。 并完成超轻量级神经网络加速器设计和验证。 1、实时性能&#xff1a;30~50FPS 2、超低功耗&#xff1a;mW级别 3、资源受限&#xff1a;包括…

学习记忆——数学篇——案例——代数——方程——一元二次方程

重点记忆法 a x 2 b x c 0 ax^2bxc0 ax2bxc0 整体可以由&#xff1a; 根 ⟹ \Longrightarrow ⟹ △ △ △ ⟹ \Longrightarrow ⟹ 求根公式 x 1 , 2 x_{1,2} x1,2​ − b △ 2 a \frac{-b\sqrt{△}}{2a} 2a−b△ ​​ ⟹ \Longrightarrow ⟹ 韦达定理 ⟹ \Longrightarr…

Acwing.4742 电(动态规划)

题目 某城市有 N 个电力节点&#xff0c;编号 1∼N。 这些电力节点形成的电力网络&#xff0c;可以看作一个 N 个节点 N−1 条边的连通图。 每个电力节点都有一个固定的电容&#xff0c;其中第 i 个节点的电容为 Ai。 现在&#xff0c;可以选择其中一个节点进行供电&#x…

婚礼避坑指南(tips分享)

1️⃣自己买婚纱很可能比租的更省钱&#xff0c;更时髦。我是先去婚纱店看&#xff0c;玲琅满目的婚纱让我看花了眼&#xff0c;试穿了几件重工的婚纱感觉并不是自己喜欢的款式&#xff0c;穿着也不舒服&#xff0c;而且租金都要几千。自己在京东上400买的反倒特别满意。 2️…

apipost测试工具的基本使用

目录 什么是 API Post&#xff1f; 步骤1&#xff1a;下载 步骤2&#xff1a;登录 步骤3&#xff1a;新建目录 步骤4&#xff1a;新建接口 步骤5&#xff1a;参数 步骤6&#xff1a;参数的导入导出 一.先找一个有参数的接口进行测试 二.新建一个接口 步骤7&#xff1…

2023年【司钻(钻井)】考试报名及司钻(钻井)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 司钻&#xff08;钻井&#xff09;考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新司钻&#xff08;钻井&#xff09;试题及解析题目及答案&#xff01;多做几遍&#xff0c;其实通过司钻&#xff08;…

活动预告|DeFi和zkLogin专题Workshop AMA

Sui流动性质押黑客松于10月初落下帷幕&#xff0c;但随着Sui网络TVL的不断增加&#xff0c;大家对Sui生态DeFi的讨论持续增加。据DeFiLlama统计&#xff0c;截止10月10日Sui网络TVL突破4000万USD&#xff0c;不断创历史新高&#xff01;zklogin于9月底正式上线&#xff0c;用户…

C++ - 包装器

包装器 在 C 当中可能会有各种各样的可调用类型&#xff0c;比如 函数指针&#xff0c;仿函数&#xff0c;lambda 等等&#xff0c;那么这么多的可调用类型&#xff0c;我们在使用的时候就会犯迷糊&#xff0c;那可不可以统一控制一下呢&#xff1f; function包装器&#xff…

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

FaceFusion&#xff1a;探索无限创意&#xff0c;创造独一无二的面孔融合艺术&#xff01; 它使用先进的图像处理技术&#xff0c;允许用户将不同的面部特征融合在一起&#xff0c;创造有趣和令人印象深刻的效果。这个项目的潜在应用包括娱乐、虚拟化妆和艺术创作&#xff0c;…