图像压缩JPEG
JPEG图像压缩一幅图像我们可以看是一个二维数组组成的,例如我们常见的1080p,它实际上是由1080 x 1920个像素点组成的。 1080:图像的高度 1920:图像的宽度 其中,每一个像素都是有固定的位数表示的,例如我们常见的彩色图片。每个颜色占八位(RGB),一共三个基色,所以一个像素点占24位。这里为了方便讨论,我们讨论灰色的图片,也就是每个像素占8位。 在JOPGE中,我们会使用到离散余弦变换(DCT)来对图像进行压缩。 不难发现,由于有两个求和,所以DCT的计算量是O($n^2$),其中n是图像的像素个数。如果要处理一个1080p的图像,那么计算量是($(1920 * 1080)^2$)在JPEG中,我们使用了8x8的块来进行DCT,也就是说,我们将图像分成8x8的小块,然后对每个小块进行DCT。 举个例子,假设我们有一个1080p的图像,我们将其分成8x8的小块,那么我们每一列就有1920/8=240个小块 ,每一行就有1080/8=144个小块。所以,DCT的计算量是O($(64)^2$) x 240 x 144...
离散余弦变换
离散余弦变换离散余弦变换(DCT)是一种常用的信号处理技术,它是一种离散时间信号的变换,其目的是将时域信号转换为频域信号。DCT的基本思想是将时域信号分解为离散的频率成分,然后对每个频率成分进行分析,从而得到频域信号。 一阶离散余弦变换公式$$\begin{equation}T(m) = c(m) \sum_{x=0}^{N-1} P(x) \cos\left[ \frac{(2x+1)m \pi}{N-1} \right]\end{equation}其中:$$ $$ c(k) = \begin{cases} \sqrt{\frac{1}{N}}, & k=0 \\ \sqrt{\frac{2}{N}}, & \text{其他} \end{cases} $$ 上面这个公式里 T(m) 是 P(x) 变换后的值 二阶离散余弦变换公式对于二阶离散余弦变换,我们可以竖着做一次变换,然后横着做一次变换,得到: $$\begin{equation}T(m,n) = c_N(m)c_M(n) \sum_{x=0}^{N-1}...
ESP32开发入门:AI小智学习笔记 - 第二部分
第二部分:ESP32开发入门1. Application::Start() 执行流程继续上一章的内容,让我们跟踪Application::Start() 的执行流程。从提供的代码中可以看到,在 application.cc 中: 1234567891011121314151617181920212223242526272829303132333435363738394041424344void Application::Start() { auto& board = Board::GetInstance(); SetDeviceState(kDeviceStateStarting); /* Setup the display */ auto display = board.GetDisplay(); // ... /* Wait for the network to be ready */ board.StartNetwork(); // Check for new firmware version or get...
ESP32开发入门:AI小智学习笔记 - 第一部分
ESP32程序入口文件解析源代码阅读指南一般来说,要阅读一个程序的源代码,我们需要找到程序的入口文件,这里是 main/main.cc。 12345678910111213#include <esp_log.h>#include <esp_err.h>#include <nvs.h>#include <nvs_flash.h>#include <driver/gpio.h>#include <esp_event.h>#include "application.h"#include "system_info.h"#define TAG "main"//主程序入口函数 在这里,我们可以看到一些头文件的引入(include),以及一些宏定义(define)。 <esp_log.h>: 用于日志记录,帮助开发者输出调试信息。 <esp_err.h>:...
python后端开发
本章将讲解如何通过Django框架进行后端开发。1. 安装需要的包1pip install django djangorestframework django-cors-headers 2. 创建一个Django项目12django-admin startproject core .python manage.py startapp api 3. 配置Django项目在core/settings.py中添加以下代码: 1234567891011INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ...
快速幂运算
快速幂运算简介快速幂运算是一种高效计算整数幂的方法,通过将幂指数分解为二进制形式,减少乘法次数,从而提高计算速度。它广泛应用于计算机科学中的加密算法和数值计算。 前言在计算机科学中,幂指数的计算是一个常见的任务,尤其在加密算法和数值计算中。传统的计算方法通常使用循环或递归来实现。例如,要计算 $a^b$,可以使用以下代码: 12345def power(a, b): result = 1 for i in range(b): result *= a return result 这种方法的时间复杂度为 $O(b)$,当 $b$ 非常大时,计算效率较低。 快速幂运算的原理快速幂运算通过将幂指数 $b$ 分解为二进制形式来减少计算次数。例如,若 $b = 13$,其二进制表示为 $1101$,则 $a^{13}$ 可以表示为 $a^{1101} = a^{8} \times a^{4} \times a^{1}$。在计算过程中,我们只需计算 $a^1$、$a^2$、$a^4$ 和...
Python爬虫-1
前言在上一篇文章中,我们介绍了Python爬虫的基础知识。在这篇文章中,我们将学习编写一个简单的Python爬虫程序。 本文章发布于 hjq.college,转载请注明出处。
Python爬虫-0
...
我的第一篇博客
欢迎来到我的博客大家好,这是我用Hexo搭建的个人博客的第一篇文章。在这里,我将会分享我的技术心得、学习经验和生活感想。 关于HexoHexo是一个快速、简洁且强大的博客框架。它使用Markdown来编写文章,可以轻松地生成静态网站。 为什么选择Hexo 简单高效:使用Markdown编写,部署简单 丰富的插件:有大量的插件可以扩展功能 主题多样:有各种精美的主题可供选择 静态生成:生成静态文件,易于部署和访问 Butterfly主题我选择了Butterfly主题,这是一个功能强大、外观精美的Hexo主题。 Butterfly的特点 美观的设计:精心设计的界面,视觉效果出色 响应式布局:在不同设备上都能很好地展示 深色模式:支持深色模式,保护眼睛 多种小部件:提供了多种实用的小部件 代码示例下面是一个JavaScript代码示例: 12345678// 一个简单的打印函数function sayHello(name) { console.log(`你好,${name}!`); return...
更好的数学公式格式化方法
MathJax = { tex: { inlineMath: [['$', '$'], ['\\(', '\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']], processEscapes: true, processEnvironments: true, packages: {'[+]': ['ams']} }, options: { skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre'] } }; mjx-container { overflow-x: auto; overflow-y: hidden; padding: 0.5em 0; margin: 1em 0; background-color: #f9f9f9; border-radius: 5px; } mjx-container[jax="CHTML"][display="true"] { ...
文章标题
这里写文章内容,使用 Markdown 格式。 二级标题哈喽能看见吗 三级标题 列表项1 列表项2 本文章发布于 hjq.college,转载请注明出处。