图像的空域处理实验作业

# 在绘图中显示中文字体,而非乱码
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
import cv2
import matplotlib.pyplot as plt
import numpy as np

1 绘制伽马变换的函数图像,并导入一张图像,对其进行伽马变换,简要叙述变换前后图像的变化。

# 第一题代码部分
r = np.arange(0, 1, 0.001)
y = np.array([0.001, 0.01, 0.1, 0.5, 0.9, 1, 5, 10,20])  # 将 y 转换为 numpy 数组
c = 1
s = []
for i in range(9):s_temp =c * (r**y[i])  # 使用 y[i] 而不是 ys.append(s_temp)
# 做出曲线图
fig = plt.figure()
axes = fig.add_subplot()
label_list = ["y=0.001", "y=0.01", "y=0.1", "y=0.5", "y=0.9", "y=1", "y=5", "y=10", "y=1000"]
for i in range(9):axes.plot(r*255, s[i], label=label_list[i])
plt.title('对数变换曲线')
plt.xlabel('变换前灰度值')
plt.ylabel('变换后灰度值')
plt.legend()
plt.grid()
plt.show()

img2 = cv2.imread(图片路径)
img2 = np.array(img2, dtype='float')
img3 = np.zeros(img2.shape)
c = 40
y=3for i in range(img2.shape[0]):for j in range(img2.shape[1]):img3[i][j] = 255.0 / pow(255.0, y) * (img2[i][j]**y)title_list = ["原始图像","γ=3变化后的图像"]
img3 = np.where(img3 > 255.0, 255.0, img3)  # 超过255的设置为255
img3 = np.where(img3 < 0.0, 0.0, img3)  # 低于0的设置为0
img3 = np.array(img3, dtype='uint8')
img2 = np.array(img2, dtype='uint8')
img_list = [img2, img3]for i in range(2):plt.subplot(1, 2, i+1)plt.imshow(img_list[i], 'gray')plt.title(title_list[i])plt.xticks([])plt.yticks([])
plt.show()    
print(2)

第一题文字部分:
γ>1时,图像会变暗,对比度降低,较亮的像素值比较暗的像素值受到更大的影响,适用于较亮的图像,用于降低亮度并增加一些对比度。
γ=1时,图像没有变化。
γ<1时,图像会变亮,对比度增加,特别是暗部细节会变得更加明显,适用于较暗的图像,用于提高亮度并减少对比度。

统计一幅图像的直方图,并对其进行均衡化,展示均衡化前后的图像和对应的直方图。简要叙述图像直方图均衡化的作用。

# 第二题代码部分
# 直方图均衡化
img = cv2.imread(图片路径, cv2.IMREAD_GRAYSCALE)
plt.subplot(2,2,1), plt.imshow(img, 'gray'), plt.title('原始图像'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2), plt.hist(img.ravel(), 16), plt.title('直方图')
# 均衡化
img_equ = cv2.equalizeHist(img)
plt.subplot(2,2,3), plt.imshow(img_equ, 'gray'), plt.title('均衡化后图像'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4), plt.hist(img_equ.ravel(), 16)plt.show()

第二题文字部分:
作用:
1.通过重新分配图像的像素值,使得图像的直方图更加均匀,从而提高图像的整体对比度,改善视觉效果。
2.在对比度较低的区域,直方图均衡化可以使像素值相近而难以区分的区域的像素值分布更加分散,使得细节更加清晰。
3.降低强光影响:在光照不均匀的图像中,某些区域可能因为过曝或欠曝而丢失信息。直方图均衡化有助于减少这种光照不均匀造成的影响,使得图像的各个区域都能更好地展现其细节。

3.导入一幅图像,降低其分辨率后,使用两种方法对图像进行插值并展示。

img_ori = cv2.imread(图片路径, cv2.IMREAD_GRAYSCALE)
#降低分辨率
new_x = int(img_ori.shape[0]/16.0)
new_y = int(img_ori.shape[1]/16.0)
img_resize = cv2.resize(img_ori, (new_y, new_x))
img_list = [img_ori, img_resize]
title_list = ["原始图像", "16级空间分辨率降低图像"]
for i in range(2):plt.subplot(1, 2, i+1)plt.imshow(img_list[i], 'gray')plt.title(title_list[i])plt.xticks([])plt.yticks([])
plt.show()
width, height = 200, 200
# 几何插值(面积插值)
resized_img_area = cv2.resize(img_resize, (width, height), interpolation=cv2.INTER_AREA)
# 最近邻插值
resized_img_nearest = cv2.resize(img_resize, (width, height), interpolation=cv2.INTER_NEAREST)
# 双线性插值
resized_img_bilinear = cv2.resize(img_resize, (width, height), interpolation=cv2.INTER_LINEAR)
# 双三次插值
resized_img_cubic = cv2.resize(img_resize, (width, height), interpolation=cv2.INTER_CUBIC)img_list = [img_ori, img_resize,resized_img_area, resized_img_nearest,resized_img_bilinear,resized_img_cubic]
title_list = ["原始图像", "16级空间分辨率降低图像","几何插值","最近邻插值","双线性插值","双三次插值"]
for i in range(6):plt.subplot(3, 2, i+1)plt.imshow(img_list[i], 'gray')plt.title(title_list[i])plt.xticks([])plt.yticks([])
plt.show()

4.导入一幅图像,使用两种方法对其进行平滑。然后,使用拉普拉斯锐化平滑后的两幅图像,并简要叙述图像平滑和拉普拉斯锐化的特点及对图像的影响。

# 第四题代码部分
img = cv2.imread(图片, cv2.IMREAD_GRAYSCALE)
# 邻域滤波
mean_blurred = cv2.blur(img, (5, 5))
# 中值滤波
img_median = cv2.medianBlur(img, 3)   
# 拉普拉斯锐化
la = np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]])
la_filter = np.float32(la) / -16  # 归一化
laplacian = cv2.filter2D(img, -1, la_filter)
sharpened = cv2.add(img, laplacian)img_list = [img, mean_blurred,img_median, sharpened]
title_list = ["原始图像", "邻域滤波","中值滤波","拉普拉斯锐化"]
for i in range(4):plt.subplot(4, 1, i+1)plt.imshow(img_list[i], 'gray')plt.title(title_list[i])plt.xticks([])plt.yticks([])
plt.show()

第四题文字部分:

图像平滑的特点:减少图像噪声,降低图像分辨率,使图像变得平滑。
拉普拉斯锐化的特点:增强图像的边缘和细节,使图像看起来更清晰图,可能会增强图像噪声。
对图像的影响:平滑可以减少图像噪声,但可能会导致图像细节丢失;拉普拉斯锐化可以增强图像的边缘和细节,使图像更清晰,但可能会引入或增强噪声。

使用opencv的伪彩色增强函数,选取一张图片进行伪彩色增强,并对所使用的伪彩色增强函数进行对应的文档说明(包含参数、返回值和使用说明等,力所能及的情况下,可简要说明相关原理)。

# 第五题代码部分
img_5 = cv2.imread(图片路径, cv2.IMREAD_GRAYSCALE)
img_5_RAINBOW = cv2.applyColorMap(img_5, cv2.COLORMAP_COOL)
img_5_JET = cv2.applyColorMap(img_5, cv2.COLORMAP_HSV)
img_list = [img_5, img_5_RAINBOW,img_5_JET]
title_list = ["原始图像", "COOL伪彩色","HSV伪彩色"]
for i in range(3):plt.subplot(3, 1, i+1)plt.imshow(img_list[i], 'gray')plt.title(title_list[i])plt.xticks([])plt.yticks([])
plt.show()

第五题文字部分:

一、伪彩色增强函数:cv2.applyColorMap(src, colormap[, dst])
二、参数解释:
1.src:输入图像,必须是8位单通道灰度图像(cv2.CV_8UC1)。
src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. If CV_8UC3, then the CV_8UC1 image is generated internally using cv::COLOR_BGR2GRAY.
2.colormap:颜色映射表,可以是 OpenCV 提供的预定义颜色映射表之一,或者是一个用户自定义的颜色映射表。
colormap The colormap to apply, see ColormapTypes
3.dst:输出图像,它将与源图像 src 具有相同的大小和类型,但会被转换为三通道彩色图像(cv2.CV_8UC3),该字段可以省略。
dst The result is the colormapped source image. Note: Mat::create is called on dst.

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

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

相关文章

基础算法(6)——模拟

1. 替换所有的问号 题目描述&#xff1a; 算法思路&#xff1a; 从前往后遍历整个字符串&#xff0c;找到问号之后&#xff0c;尝试用 a ~ z 的每一个字符替换即可 注意点&#xff1a;需考虑数组开头和结尾是问号的边界情况 代码实现&#xff1a; class Solution {public …

《深度学习》OpenCV FisherFaces算法人脸识别 原理及案例解析

目录 一、FisherFaces算法 1、什么是FisherFaces算法 2、原理 3、特点 4、算法步骤 1&#xff09;数据预处理 2&#xff09;特征提取 3&#xff09;LDA降维 4&#xff09;特征投影 5&#xff09;人脸识别 二、案例解析 1、完整代码 运行结果&#xff1a; 一、Fish…

Java 深度优先搜索

深度优先搜索&#xff08;Depth-First Search, DFS&#xff09;是一种用于遍历或搜索树或图的算法。在Java中&#xff0c;可以使用递归或迭代的方法来实现DFS。下面我将分别介绍这两种实现方式。 递归实现 递归实现通常更为直观和简洁。在递归方法中&#xff0c;我们会使用一…

[Java基础] 流程控制

[Java基础] 运算符 [Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 目录 基本语法 条件语句 if 语句 if-else 语句 switch 语句 循环语句 for 循环 while 循环 do-while 循环 跳转语句 break 语句 continue 语句 return 语句 最佳实践…

嵌入式基础 -- SDIO协议

SDIO 硬件、协议与 Linux 驱动技术文档 1. SDIO 简介 SDIO&#xff08;Secure Digital Input Output&#xff09;协议是SD存储卡的物理接口扩展&#xff0c;允许通过SD总线连接和控制各种I/O设备&#xff0c;如Wi-Fi、蓝牙、GPS模块等。SDIO协议在标准的SD协议基础上扩展&…

【题解】【记忆化递归】——Function

【题解】【记忆化递归】——Function Function题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示数据规模与约定 1.思路解析2.AC代码 Function 通往洛谷的传送门 题目描述 对于一个递归函数 w ( a , b , c ) w(a,b,c) w(a,b,c) 如果 a ≤ 0 a \le 0 a≤0 或 b ≤…

大厂面试真题-具体说说jdk1.7和1.8的hashmap的线程不安全都有什么问题

HashMap在JDK 1.7和JDK 1.8中都存在线程不安全的问题&#xff0c;但具体表现和解决方式有所不同。以下是对这两个版本中HashMap线程不安全问题的详细分析&#xff1a; JDK 1.7 HashMap的线程不安全问题 在JDK 1.7中&#xff0c;HashMap的线程不安全问题主要体现在扩容过程中。…

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections&#xff1a;orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的&#xff0c;需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

项目分析:自然语言处理(语言情感分析)

在这个信息爆炸的时代&#xff0c;我们每天都在与海量的文本数据打交道。从社交媒体上的帖子、在线评论到新闻报道&#xff0c;文本信息无处不在。然而&#xff0c;这些文本不仅仅是文字的堆砌&#xff0c;它们背后蕴含着丰富的情感和观点。如何有效地理解和分析这些情感&#…

【AI知识点】对比学习(Contrastive Learning)

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 对比学习&#xff08;Contrastive Learning&#xff09; 是一种基于样本之间相似性和差异性的无监督或自监督学习方法&#xff0c;旨在通过构建正例和负例对来学习数据的有效表示。对比学习广泛应用于自然语言处理&#…

Linux下的防病毒软件(Antivirus software for Linux)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

FFmpeg的简单使用【Windows】--- 指定视频的时长

目录 功能描述 效果展示 代码实现 前端代码 后端代码 routers 》users.js routers 》 index.js app.js 功能描述 此案例是在上一个案例【FFmpeg的简单使用【Windows】--- 视频混剪添加背景音乐-CSDN博客】的基础上的进一步完善&#xff0c;可以先去看上一个案例然后再…

docker环境安装mongoDB实现平滑迁移实战

docker环境安装mongoDB实现平滑迁移实战 一、备份原始数据&#xff08;从别的服务器备份到当前服务器&#xff09;二、数据迁移三、迁移过程日志打印四、验证迁移数据准确性 一、备份原始数据&#xff08;从别的服务器备份到当前服务器&#xff09; 使用mongodump工具对原始mo…

Redisson使用全解

redisson使用全解——redisson官方文档注释&#xff08;上篇&#xff09;_redisson官网中文-CSDN博客 redisson使用全解——redisson官方文档注释&#xff08;中篇&#xff09;-CSDN博客 redisson使用全解——redisson官方文档注释&#xff08;下篇&#xff09;_redisson官网…

Java发送请求实现QPS限制

业务场景 在开发中&#xff0c;当有业务需求需要调用第三方服务实现功能&#xff0c;但是服务接口有QPS限制&#xff0c;所以我们需要在发送请求时限制发送频率防止请求失败。 实现方法 使用 Java Semaphore 类来实现控制请求QPS QPS限制 Component public class QPSControll…

洛谷P1484.种树

洛谷P1484.种树 题目解析及思路 题目要求在一条n个坑的路上&#xff0c;对于已知每个坑种树的收益&#xff0c;并且相邻两个坑不能同时种树的情况下&#xff0c;求最大收益 思考一个小范围的例子(不考虑数组全负数)&#xff1a; 当m 1时&#xff0c;答案一定为数组中的最大…

MySQL 8.4修改user的host属性值

MySQL 8.4修改user的host属性值 update mysql.user set host localhost where user mysql用户名; MySQL 8.4修改初始化后的默认密码-CSDN博客文章浏览阅读804次&#xff0c;点赞6次&#xff0c;收藏11次。先下载mysql的zip压缩包&#xff1a;MySQL :: Download MySQL Communi…

贪心day1

文章目录 前言雪糕的最大数量重新分装苹果装满石头的背包的最大数量K 次取反后最大化的数组和不同整数的最少数目 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;文章题目大多来自于 leetcode&#xff0c;当然也可能来自洛…

51、AVR、ARM、DSP等常用芯片之对比

51芯片 51芯片通常指的是基于8051内核的单片机&#xff0c;这是一种经典的微控制器&#xff08;MCU&#xff09;。虽然关于51芯片的详细现代应用和发展可能因具体型号和厂商而有所不同&#xff0c;但基于8051内核的单片机通常具有以下特点&#xff1a; 结构经典&#xff1a;8…

STL-string

STL的六大组件&#xff1a; string // string constructor #include <iostream> #include <string> using namespace std; int main() {// 构造std::string s0("Initial string");std::string s1; //nullptrstd::string s2("A character sequenc…