码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数字图像处理实验记录一(图像基本灰度变换)


    文章目录

    • 一、基础知识
      • 图像是什么样的?
      • 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    在这里插入图片描述

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

    %分段
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

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

    subplot(221);imshow(I1);title('灰度图');
    subplot(222);imhist(I1);title('灰度直方图');
    
    subplot(223);imshow(I2);title('灰度变换后图');
    subplot(224);imhist(I2);title('灰度直方图');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    任务二:

    反转变换:

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

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

    对数变换:

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

    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('对数变换图');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    幂次变换:

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

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

    四、结果展示

    结果1:

    在这里插入图片描述

    结果2:

    反转变换:

    在这里插入图片描述

    对数变换:

    在这里插入图片描述

    幂次变换:

    在这里插入图片描述

    五、反思,总结与收获

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6,matlab 循环语句怎么写

    for i = 1:7		%这个代表了从1到7,每次递增1
    ...
    end
    
    for i = 0:2:8   %这个代表了从0到8,每次递增2
    ...
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7,清空命令行

    % 在脚本里加入以下语句,在每次运行时会清空命令行
    clear all;
    clc;
    
    • 1
    • 2
    • 3
  • 相关阅读:
    研究生常用工具
    基于注意力机制的图神经网络且考虑关系的R-GAT的一些理解以及DGL代码实现
    Prometheus + Grafana 搭建监控仪表盘
    被罚「带薪休假」一个月后,谷歌解雇了「爱」上 AI 的他
    沥青拦水带成型机摊铺作业急工地之所急
    章节十一:定时与邮件
    ubuntu2204任务栏显示cpu 网速信息
    免密登录和Jenkins自动复制jar包以及启动
    MySQL8.0优化 - 锁 - 全局锁、死锁
    3ds Max精模数据优化处理参考
  • 原文地址:https://blog.csdn.net/qq_62791684/article/details/133704719
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号