当前位置: 首页 > news >正文

HNU计算机视觉作业一

前言

选修的是蔡mj老师的计算机视觉,上课还是不错的,但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学,这门课最后混了80多分,所以下面作业解题过程均为自己写的,并不是标准答案,仅供参考

任务1

修改test.py的task_one()函数,对task1.jpg进行去噪处理,处理结果保存为task1_proc.jpg

提示:请观察分析task1.jpg的噪声特点,并选择合适的处理方法
请添加图片描述

def task_one():img = cv2.imread('task1.jpg')#---------your code-----------------#median = cv2.medianBlur(img, 3)#---------draw figures--------------#plt.imshow(cv2.cvtColor(median, cv2.COLOR_BGR2RGB)),plt.title('task1 output')plt.show()#---------save figures--------------#cv2.imwrite("task1_proc.jpg", median)

效果如下:
请添加图片描述

任务2

修改test.py的task_two()函数,对task2.jpg进行去噪处理,处理结果保存为task2_proc.jpg

提示:请观察分析task2.jpg的噪声特点,并选择合适的处理方法

请添加图片描述

def task_two():img = cv2.imread('task2.jpg')#---------your code-----------------#blur = cv2.bilateralFilter(img,5,50,50)#---------draw figures--------------##plt.imshow(cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)),plt.title('task2 output')#plt.show()#---------save figures--------------#cv2.imwrite("task2_proc.jpg", blur)

效果如下:
请添加图片描述

任务3

修改test.py的task_three()函数,对task3.jpg进行去噪处理,处理结果保存为task3_proc.jpg

提示:task3.jpg中的噪声为y轴方向的周期噪声,周期为图像高度(height)的1/10

请添加图片描述

这个不会做,弄了半天

def task_three():#img = cv2.imread('task3.jpg',1)#---------your code-----------------## 读取图像img = cv2.imread('task3.jpg')# 分离RGB通道b, g, r = cv2.split(img)# 对每个通道进行傅里叶变换fb = np.fft.fft2(b)fg = np.fft.fft2(g)fr = np.fft.fft2(r)# 将频域中的原点移动到图像中心fb_shift = np.fft.fftshift(fb)fg_shift = np.fft.fftshift(fg)fr_shift = np.fft.fftshift(fr)# 获取频谱图像magnitude_spectrum_b = 20 * np.log(np.abs(fb_shift))magnitude_spectrum_g = 20 * np.log(np.abs(fg_shift))magnitude_spectrum_r = 20 * np.log(np.abs(fr_shift))# 获取图像高度height, width = img.shape[:2]# 计算周期噪声的频率成分dft_height = np.ceil(height / 10)cy = np.arange(dft_height, height, dft_height)cx = np.arange(width)# 将周期噪声的频率成分设置为0for y in cy:fb_shift[int(y) - 1:int(y) + 1, :] = 0fg_shift[int(y) - 1:int(y) + 1, :] = 0fr_shift[int(y) - 1:int(y) + 1, :] = 0# 进行反傅里叶变换,得到去噪后的图像ib = np.fft.ifft2(np.fft.ifftshift(fb_shift))ig = np.fft.ifft2(np.fft.ifftshift(fg_shift))ir = np.fft.ifft2(np.fft.ifftshift(fr_shift))# 将每个通道的结果合并为一张去噪后的彩色图像denoised_img = cv2.merge((ib.real, ig.real, ir.real))#---------draw figures--------------##plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB)),plt.title('task3 output')#plt.show()#---------save figures--------------#cv2.imwrite("task3_proc.jpg", denoised_img)

效果和原图没啥区别。。。
请添加图片描述

源代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Mar 31 14:51:59 2023@author: cai-mj
"""import numpy as np
import cv2
from matplotlib import pyplot as pltdef task_one():img = cv2.imread('task1.jpg')#---------your code-----------------#median = cv2.medianBlur(img, 3)#---------draw figures--------------#plt.imshow(cv2.cvtColor(median, cv2.COLOR_BGR2RGB)),plt.title('task1 output')plt.show()#---------save figures--------------#cv2.imwrite("task1_proc.jpg", median)def task_two():img = cv2.imread('task2.jpg')#---------your code-----------------#blur = cv2.bilateralFilter(img,5,50,50)#---------draw figures--------------##plt.imshow(cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)),plt.title('task2 output')#plt.show()#---------save figures--------------#cv2.imwrite("task2_proc.jpg", blur)def task_three():#img = cv2.imread('task3.jpg',1)#---------your code-----------------## 读取图像img = cv2.imread('task3.jpg')# 分离RGB通道b, g, r = cv2.split(img)# 对每个通道进行傅里叶变换fb = np.fft.fft2(b)fg = np.fft.fft2(g)fr = np.fft.fft2(r)# 将频域中的原点移动到图像中心fb_shift = np.fft.fftshift(fb)fg_shift = np.fft.fftshift(fg)fr_shift = np.fft.fftshift(fr)# 获取频谱图像magnitude_spectrum_b = 20 * np.log(np.abs(fb_shift))magnitude_spectrum_g = 20 * np.log(np.abs(fg_shift))magnitude_spectrum_r = 20 * np.log(np.abs(fr_shift))# 获取图像高度height, width = img.shape[:2]# 计算周期噪声的频率成分dft_height = np.ceil(height / 10)cy = np.arange(dft_height, height, dft_height)cx = np.arange(width)# 将周期噪声的频率成分设置为0for y in cy:fb_shift[int(y) - 1:int(y) + 1, :] = 0fg_shift[int(y) - 1:int(y) + 1, :] = 0fr_shift[int(y) - 1:int(y) + 1, :] = 0# 进行反傅里叶变换,得到去噪后的图像ib = np.fft.ifft2(np.fft.ifftshift(fb_shift))ig = np.fft.ifft2(np.fft.ifftshift(fg_shift))ir = np.fft.ifft2(np.fft.ifftshift(fr_shift))# 将每个通道的结果合并为一张去噪后的彩色图像denoised_img = cv2.merge((ib.real, ig.real, ir.real))#---------draw figures--------------##plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB)),plt.title('task3 output')#plt.show()#---------save figures--------------#cv2.imwrite("task3_proc.jpg", denoised_img)if __name__ == '__main__':task_one()task_two()task_three()

相关文章:

HNU计算机视觉作业一

前言 选修的是蔡mj老师的计算机视觉,上课还是不错的,但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学,这门课最后混了80多分,所以下面作业解题过程均为自己写的,并不是标准答案,仅供参考 …...

Java:SpringBoot获取当前运行的环境activeProfile

代码示例 /*** 启动监听器*/ Component public class AppListener implements ApplicationListener<ApplicationReadyEvent> {Overridepublic void onApplicationEvent(ApplicationReadyEvent event) {// 获取当前的环境&#xff0c;如果是test&#xff0c;则直接返回Co…...

射频功率放大器的参数有哪些

射频功率放大器是射频通信系统中重要的组件&#xff0c;用于将输入的射频信号放大到需要的功率水平。在设计和选择射频功率放大器时&#xff0c;需要考虑多种参数。下面西安安泰将详细介绍射频功率放大器的常见参数。 1、P1dB功率压缩点 当放大器的输入功率比较低时&#xff0c…...

3-5、多态性

语雀原文链接 文章目录 1、多态类型2、上下转型3、instanceof 1、多态类型 编译时多态&#xff1a;方法重载 在编译阶段就已经确定要调用哪个重载的方法 运行时多态&#xff1a;方法重写 具体调用哪个子类的方法要到运行的时候&#xff0c;结果才能确定&#xff0c;多态只针对…...

什么是https 加密协议?

什么是https 加密协议&#xff1f; 加密通信的作用加密原理数字证书SSL/TLS 协议部署和使用重要性 HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是一种网络传输协议&#xff0c;它是基于HTTP协议的扩展&#xff0c;通过加密通信内容来保障数据传输的安全…...

低压无功补偿在分布式光伏现场中的应用

摘要&#xff1a;分布式光伏电站由于建设时间短、技术成熟、收益明显而发展迅速&#xff0c;但光伏并网引起用户功率因数异常的问题也逐渐凸显。针对分布式光伏电站接入配电网后功率因数降低的问题&#xff0c;本文分析了低压无功补偿装置补偿失效的原因&#xff0c;并提出了一…...

人工智能技术在宽域飞行器控制中的应用

近年来&#xff0c;以空天飞行器、高超声速飞行器等 ̈1 为典型代表的宽域飞行器蓬勃发展&#xff0c;如图1所示&#xff0c;其 不仅对高端装备制造、空间信息以及太空经济等领 域产生辐射带动作用&#xff0c;进一步提升了中国在航空航 天领域的自主创新能力&#xff0c;同时也…...

NGINX高性能服务器与关键概念解析

目录 1 NGINX简介2 NGINX的特性3 正向代理4 反向代理5 负载均衡6 动静分离7 高可用8 结语 1 NGINX简介 NGINX&#xff08;“engine x”&#xff09;在网络服务器和代理服务器领域备受推崇。作为一款高性能的 HTTP 和反向代理服务器&#xff0c;它以轻量级、高并发处理能力以及…...

云ssrf

https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf SSRF -> EC2 Metadata API -> IAM临时Security Token -> AWS SSM -> RCESSRF -> EC2 Metadata API -> IAM临时Security Token -> AWS Lambda -> RCESSRF -&g…...

面试题目总结(三)

1. Spring、Springboot、springMVC、Spring Cloud 的区别&#xff1a; Spring&#xff1a;Spring 是一个开源的、轻量级的Java框架&#xff0c;提供了丰富的功能和组件&#xff0c;用于构建企业级应用程序。Spring框架包含了很多模块&#xff0c;包括核心容器、数据访问、事物…...

Kubernetes入门笔记——(2)k8s设计文档

​k8s最初源自谷歌的Brog项目&#xff0c;架构与其类似&#xff0c;主要包括etcd、api server、controller manager、scheduler、kubelet和kube-proxy等组件 etcd&#xff1a;分布式存储&#xff0c;保存k8s集群的状态 api server&#xff1a;资源操作的唯一入口&#xff0c;…...

LoadBalancer将服务暴露到外部实现负载均衡metallb-layer2模式配置介绍

目录 一.metallb简介 1.支持多种负载均衡协议 2.支持自定义 IP 地址范围 3.无需额外的硬件设备 4.易于安装和配置 5.可扩展性强 6.layer2模式下选举的leader节点压力大 二.layer2模式配置演示 1.开启ipvs并开启严格ARP模式 2.下载并应用metallb 3.创建一个 IPAddres…...

【pytest】单元测试文件的写法

前言 可怜的宾馆&#xff0c;可怜得像被12月的冷雨淋湿的一条三只腿的黑狗。——《舞舞舞》 \;\\\;\\\; 目录 前言test_1或s_test格式非测试文件pytest.fixture()装饰器pytestselenium test_1或s_test格式 要么 test_前缀 在前&#xff0c;要么 _test后缀 在后&#xff01; …...

arcgis for js 添加自定义叠加图片到地图坐标点上

在使用arcgis for js开发地图绘制图层时&#xff0c;可以通过相关api实现添加图标到某个坐标点&#xff0c;那么如果现在有一个需要添加一个小图叠大图的需求&#xff0c;又或者是自定义绘制图标&#xff0c;如何实现&#xff1f; 1、简单地绘制一个图标到底图图层上面 const…...

记录 | linux下互换键盘的Ctrl和CapsLock键

互换ctrl和CapsLK setxkbmap -option "ctrl:swapcaps"打开设置文件&#xff1a; sudo vim /etc/default/keyboard将其中的XKBOPTIONS中添加ctrl:swapcaps即可&#xff0c;如下所示&#xff1a; # KEYBOARD CONFIGURATION FILE# Consult the keyboard(5) manual pa…...

【公网远程手机Android服务器】安卓Termux搭建Web服务器

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;cpolar&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程…...

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、金融行业软件特…...

Java网络编程——安全网络通信

在网络上&#xff0c;信息在由源主机到目标主机的传输过程中会经过其他计算机。在一般情况下&#xff0c;中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易时&#xff0c;网络上的信息有可能被非法分子监听&#xff0c;从而导致个人隐私的泄露。由于Intern…...

云原生数据库是什么?它的作用是啥?

目前来说&#xff0c;各厂商的云原生数据库在演进路线上分成了两个略有不同的路径来解决不同的问题。 一种是各大公有云厂商选择的&#xff0c;优先保证上云兼容性的路线&#xff0c;就是基于存算分离架构对传统数据库进行改造的路线&#xff1a;通过把大量的日志操作放到后台…...

使用ansible批量初始化服务器

简介 本文详细介绍ansible怎么批量初始化服务器&#xff0c;包括ansible批量初始化服务器详细配置和步骤&#xff0c;有需要的小伙伴们可以参考借鉴&#xff0c;希望对大家有所帮助。 详细步骤 1、ansible要初始化的主机 [rootnginx ansible]# tail -3 /etc/ansible/hosts …...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...