数字图像处理实验记录七(彩色图像处理实验)

一、基础知识

经过前面的实验可以得知,彩色图像中的RGB图像就是一个三维矩阵,有3个维度,它们分别存储着R元素,G元素,B元素的灰度信息,最后将它们合起来,便是彩色图像。
这一次实验涉及CMYK和HSI颜色模型,不妨搜索一下:
CMYK:CMYK颜色模型包括青(cyan)、品红(magenta)、黄(yellow)和黑(black),为避免与Blue混淆,黑色用K表示。彩色打印、印刷等应用领域采用打印墨水、彩色涂料的反射光来显现颜色,是一种减色方式。
HSI:HSI〔Hue-Saturation-Intensity(Lightness),HSI或HSL〕颜色模型用H、S、I三参数描述颜色特性,其中H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。

二、实验要求

  1. 读入两幅彩色图像,并分别显示图像的尺寸信息,裁剪两幅图片为相同的正方形尺寸,并保存为两幅新的图片A和B。
  2. 将两幅彩色图像A与B 按照不同的比例 (0.7:0.3, 0.5: 0.5, 0.3:0.7) 相加合成一幅新的图像,并在一个图像窗口中显示原始图像、三个合成图像。
  3. 将图像从RGB颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及matlab自带的函数rgb2gray.
    加权法就是 GRAY=0.3R+0.59G+0.11*B
    均值法就是 GRAY= (R+G+B)/3
    最大值发就是 GRAY= max(R,G,B)
    并在一个图像窗口中显示这四个灰度图像,并做讨论。
  4. 分别对RGB、CMYK及HSI三种颜色模型的图像进行亮度增强并显示。

三、实验记录

任务1:

读入两幅彩色图像,并分别显示图像的尺寸信息,裁剪两幅图片为相同的正方形尺寸,并保存为两幅新的图片A和B。

figure('NumberTitle','off','Name','图像裁剪并保存');
I1 = imread('山.png');
I2 = imread('stone.jpg');
I = I1;rect=[0,0,200,190];           %定义剪切区域
X1=imcrop(I1,rect);              %进行图像剪切
X2=imcrop(I2,rect);subplot(221),imshow(I1); %显示原图像
rectangle('Position',rect,'LineWidth',2,'EdgeColor','r') %显示图像剪切区域
subplot(222),imshow(X1);   %显示剪切的图像    
imwrite(X1,'图片1.png');subplot(223),imshow(I2); %显示原图像
rectangle('Position',rect,'LineWidth',2,'EdgeColor','r') %显示图像剪切区域
subplot(224),imshow(X2);   %显示剪切的图像 
imwrite(X2,'图片2.png');

任务2:

将两幅彩色图像A与B 按照不同的比例 (0.7:0.3, 0.5: 0.5, 0.3:0.7) 相加合成一幅新的图像,并在一个图像窗口中显示原始图像、三个合成图像。

figure('NumberTitle','off','Name','图像合成');
I1 = 0.7*X1+0.3*X2;
I2 = 0.5*X1+0.5*X2;
I3 = 0.3*X1+0.7*X2;
subplot(2,2,1);imshow(X1);title('原图1');
subplot(2,2,2);imshow(X2);title('原图2');
subplot(2,3,4);imshow(I1);title('0.7:0.3 合成');
subplot(2,3,5);imshow(I2);title('0.5:0.5 合成');
subplot(2,3,6);imshow(I3);title('0.3:0.7 合成');

任务3:

将图像从RGB颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及matlab自带的函数rgb2gray.

figure('NumberTitle','off','Name','灰度转换');
% imshow(I);
I1 = rgb_gray(I,1);
I2 = rgb_gray(I,2);
I3 = rgb_gray(I,3);
I4 = rgb2gray(I);
subplot(2,2,1);imshow(I1);title('加权法');
subplot(2,2,2);imshow(I2);title('均值法');
subplot(2,2,3);imshow(I3);title('最大法');
subplot(2,2,4);imshow(I4);title('自带函数法');

任务4:

分别对RGB、CMYK及HSI三种颜色模型的图像进行亮度增强并显示。

figure('NumberTitle','off','Name','亮度增强');
I = imread('stone.jpg');
R = I(:, :, 1);
G = I(:, :, 2);
B = I(:, :, 3);
a = 2.0;% rgb亮度增强
I1 = cat(3,a*R,a*G,a*B);I1 = uint8(I1);
I = uint8(I);% CMYK亮度增强
I2 = a*imcomplement(I);% HSI亮度增强
I3 = rgb2hsv(I);
I3(:,:,3) = a*I3(:,:,3);subplot(1,3,1);imshow(I1);title('RGB亮度增强');
subplot(1,3,2);imshow(I2);title('CMYK亮度增强');
subplot(1,3,3);imshow(I3);title('HSI亮度增强');

四、实验结果

任务1:

读入两幅彩色图像,并分别显示图像的尺寸信息,裁剪两幅图片为相同的正方形尺寸,并保存为两幅新的图片A和B:
在这里插入图片描述

任务2:

将两幅彩色图像A与B 按照不同的比例 (0.7:0.3, 0.5: 0.5, 0.3:0.7) 相加合成一幅新的图像,并在一个图像窗口中显示原始图像、三个合成图像:
在这里插入图片描述

任务3:

3.将图像从RGB颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及matlab自带的函数rgb2gray.
加权法就是 GRAY=0.3R+0.59G+0.11*B
均值法就是 GRAY= (R+G+B)/3
最大值发就是 GRAY= max(R,G,B)
并在一个图像窗口中显示这四个灰度图像,并做讨论:
在这里插入图片描述

任务4:

分别对RGB、CMYK及HSI三种颜色模型的图像进行亮度增强并显示:
在这里插入图片描述

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

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

相关文章

深入了解微服务架构:原理、优势与实践指南

深入了解微服务架构:原理、优势与实践指南 I. 引言 A. 微服务架构的兴起 随着互联网和软件开发领域的不断发展,传统的单体架构在应对日益复杂的业务需求和快速变化的市场环境时逐渐显露出局限性。在这样的背景下,微服务架构应运而生&#…

Linux下的多用户管理和认证:从入门到精通(附实例)

Linux操作系统以其强大的多用户管理和认证机制而著称。这种机制不仅允许多个用户同时登录并执行各种任务,还能确保每个用户的数据安全和隐私。本文将通过一系列实例,带你逐步掌握Linux下的多用户管理和认证。 一、Linux多用户管理的基础知识 在Linux中&…

企业内部知识库管理软件的终极指南:如何选择最适合你的工具?

知识库管理软件对于希望提高客户支持和组织效率的公司来说是一个强大的工具。在数字时代,拥有一个可靠的知识库系统对于快速准确地满足客户需求至关重要。在当今的技术条件下,知识库管理软件有很多选择,每个企业都应该仔细评估并选择最适合自…

服务器与电脑的区别?

目录 一、什么是服务器 二、什么是电脑 三、服务器和电脑的区别 一、什么是服务器 服务器是指一种专门提供计算和存储资源、运行特定软件服务的物理或虚拟计算机。服务器主要用于接受和处理来自客户端(如个人电脑、手机等)的请求,并向客户…

Android:Android Studio安装及环境配置

1开发环境搭建 Android开发需要使用java的jdk环境,所以需要下载JAVA JDK。 1.1安装配置JAVA JDK Java的JDK下载: https://www.oracle.com/technetwork/java/javase/downloads/index.html 配置java的环境变量: JAVA_HOME:java安装路径。 新增环境变量CLASSPATH 在Path环境…

数据结构入门(1)数据结构介绍

目录 前言 1. 什么是数据结构? 2.什么是算法? 3.数据结构和算法的重要性 前言 本文将开始介绍计算机里的数据结构。 数据结构是指数据对象中元素之间的关系,以及对这些关系的操作。数据结构可以分为线性结构和非线性结构。 线性结构是…

【SQL】力扣1445. 苹果和桔子

1445. 苹果和桔子 【SQL】力扣1445. 苹果和桔子 在本篇博客中,我们将深入探讨力扣(LeetCode)数据库题目1445 —— "苹果和桔子"的详细解题步骤。我们会分析题目需求,然后详细解释SQL查询的构建过程,并对其…

C++ .h文件类的调用

demo1只有类的情况下调用 下面写一个util.h 文件里面 // 定义宏防止编译器重复编译 #ifndef TEST_H #define TEST_H class Test{ public:void sum(int a, int b);int num(int a, int b);bool number();}; #endif // TEST_H 调用的时候首先要引入这个头文件 #include "u…

华为机试真题实战应用【赛题代码篇】-等差数列(附Java、C++和python代码)

目录 题目描述 知识储备 等差数列 思路解析 代码实现 C++ 代码2

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…

[144] 二叉树的前序遍历 js

题目描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 输入:root [1,null,2,3] * 输出:[1,2,3] 解题思路: 1 递归 2 迭代 前序 根左右 按照 根右左的顺序入栈,因为先进后出 每个节点出栈的…

Leetcode 213 打家劫舍 II

题意理解: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果…

2024年华为OD机试真题-灰度图恢复-Java-OD统一考试(C卷)

题目描述: 黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰阶值,256阶灰度图是一个灰阶值取值范围为0-255的灰阶矩阵,0表示全黑、255表示全白,范围内的其他值表示不同的灰度。但在计算机中实际存储时,会使用压缩算法,其中一种压缩格式和描述如下: 10 10 25…

项目02《游戏-11-开发》Unity3D

基于 项目02《游戏-10-开发》Unity3D , 任务:飞行坐骑 首先创建脚本, 绑定脚本, using UnityEngine; public class Dragon : MonoBehaviour{ [SerializeField] private float speed 10f; public Transfo…

TCP/IP协议以及UDP(超详细,看这一篇就够了)

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录专栏:TCP/IP协议以及UDP(超详细,看这一篇就够了) 🎉欢迎大家点赞👍评论📝收藏⭐文章 TCP/IP协议以及UDP(超详细,看这一篇就够了 前提概括接收端和发送端客户…

【Linux】Linux开发工具(yum、gdb、git)详解

一、软件包管理器 yum 1、什么是软件包 在 Linux 下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成…

C语言error handle全面深入剖析:从原理到实践的全方位指南

在软件开发中,错误处理是确保程序稳定性和健壮性的重要手段。C语言作为一门广泛应用于系统级编程、嵌入式开发等领域的基础编程语言,其对错误处理的支持与实现机制尤为重要。本文将深度剖析C语言中的error handling策略,并结合实例进行详细讲…

基于华为云欧拉操作系统(HCE OS)构建HCE OS基础镜像

写在前面 博文内容为 华为云欧拉操作系统入门级开发者认证(HCCDA – Huawei Cloud EulerOS)实验笔记整理认证地址:https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1当然也适用于其他的 Linux 系统构建基础镜像理解不足小…

MySQL 主键策略导致的效率性能

MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment 一、准备三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键…

【开源】JAVA+Vue.js实现在线课程教学系统

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…