当前位置: 首页 > 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 …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...