Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dct
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ISC3
compression
dct
Commits
d29bb3a9
Verified
Commit
d29bb3a9
authored
1 month ago
by
iliya.saroukha
Browse files
Options
Downloads
Patches
Plain Diff
fix: typos
parent
2fa84702
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
report/report.qmd
+12
-11
12 additions, 11 deletions
report/report.qmd
with
12 additions
and
11 deletions
report/report.qmd
+
12
−
11
View file @
d29bb3a9
...
@@ -87,8 +87,8 @@ def dct(padded_img: Img, kernel_size: int) -> Img:
...
@@ -87,8 +87,8 @@ def dct(padded_img: Img, kernel_size: int) -> Img:
La fonction `dct` va utiliser une _helper function_ (fonction d'aide) qui va
La fonction `dct` va utiliser une _helper function_ (fonction d'aide) qui va
permettre de sélectionner une sous-section de l'image en fonction des indices
permettre de sélectionner une sous-section de l'image en fonction des indices
de départs fournis pour la ligne et la colonne. Cette fonction retournera
de départs fournis pour la ligne et la colonne. Cette fonction retournera
le bloc 8x8 sur lequel la transformation sera appliqué puis insére
r
dans
l'image
le bloc 8x8 sur lequel la transformation sera appliqué
e
puis insér
é
e dans
résultante à la bonne position.
l'image
résultante à la bonne position.
```python
```python
def sliding_window(img: Img, x_pos: int, y_pos: int, n: int):
def sliding_window(img: Img, x_pos: int, y_pos: int, n: int):
...
@@ -148,8 +148,8 @@ faire il nous est nécessaire de calculer en premier lieu la matrice de
...
@@ -148,8 +148,8 @@ faire il nous est nécessaire de calculer en premier lieu la matrice de
quantification en fonction d'un facteur de qualité $q$ fourni. Plus ce facteur est
quantification en fonction d'un facteur de qualité $q$ fourni. Plus ce facteur est
élevé, plus la dégradation de la qualité de l'image sera grande. Du fait que
élevé, plus la dégradation de la qualité de l'image sera grande. Du fait que
nous travaillons toujours sur des blocs 8x8, la matrice de quantification
nous travaillons toujours sur des blocs 8x8, la matrice de quantification
$\mathbf{Q}$ possédera donc
c
es dimensions. La valeur de chaque entrée de
cette
$\mathbf{Q}$ possédera donc
les mêm
es dimensions. La valeur de chaque entrée de
matrice est calculée de la manière suivante :
cette
matrice est calculée de la manière suivante :
$$
$$
\mathbf{Q}_{ij} = 1 + q(i + j + 1)
\mathbf{Q}_{ij} = 1 + q(i + j + 1)
...
@@ -170,16 +170,16 @@ def quantized(kernel_size: int, quality: int) -> Img:
...
@@ -170,16 +170,16 @@ def quantized(kernel_size: int, quality: int) -> Img:
```
```
Ayant obtenu cette matrice, il est à présent possible quantifier la DCT de
Ayant obtenu cette matrice, il est à présent possible quantifier la DCT de
l'image obtenue au préalable. Pour ce faire, nous allons à nouveau sél
é
ctionner
l'image obtenue au préalable. Pour ce faire, nous allons à nouveau sél
e
ctionner
des sous-sections de taille 8x8 de la DCT et allons diviser ce bloc par la
des sous-sections de taille 8x8 de la DCT et allons diviser ce bloc par la
matrice de quantification $\mathbf{Q}$. Du fait que nous travaillons avec des
matrice de quantification $\mathbf{Q}$. Du fait que nous travaillons avec des
tableaux `numpy`, il nous est possible de diviser un tableau par un autre du
tableaux `numpy`, il nous est possible de diviser un tableau par un autre du
fait que l'opérateur **`/`** est surchargé. En l'occurrence, celui-ci
fait que l'opérateur **`/`** est surchargé. En l'occurrence, celui-ci
effectuera une division entrée par entrée entre les deux matrices à partir du
effectuera une division entrée par entrée entre les deux matrices à partir du
moment qu'elles possèdent les mêmes dimensions. Les résultats de division
seront
moment qu'elles possèdent les mêmes dimensions. Les résultats de
s
division
s
arrondis à l'entier le plus proche à travers la fonction `np.round`. La
matrice
seront
arrondis à l'entier le plus proche à travers la fonction `np.round`. La
résultante $\mathbf{Q}_{\text{DCT}}$ de cette opération encodera la
dégradation
matrice
résultante $\mathbf{Q}_{\text{DCT}}$ de cette opération encodera la
supplémentaire ajoutée à la DCT.
dégradation
supplémentaire ajoutée à la DCT.
```python
```python
def quantize_dct(dct_img: Img, kernel_size: int, quality: int) -> Img:
def quantize_dct(dct_img: Img, kernel_size: int, quality: int) -> Img:
...
@@ -236,7 +236,7 @@ Huffman Adaptatif. L'intérêt de cet algorithme est de pouvoir maximiser la
...
@@ -236,7 +236,7 @@ Huffman Adaptatif. L'intérêt de cet algorithme est de pouvoir maximiser la
compression d'une chaîne de caractères en combinant le codage fixe (e.g. ASCII)
compression d'une chaîne de caractères en combinant le codage fixe (e.g. ASCII)
et variable (e.g. Huffman). L'arbre résultant aura deux types de noeuds
et variable (e.g. Huffman). L'arbre résultant aura deux types de noeuds
différents. Les noeuds dit **externes** représenteront les caractères rencontrés
différents. Les noeuds dit **externes** représenteront les caractères rencontrés
de la chaîne original et les
des
noeuds **internes** correspondront à la somme
de la chaîne original
e
et les noeuds **internes** correspondront à la somme
des poids de ses enfants (i.e. nombre d'occurrence des caractères). Par
des poids de ses enfants (i.e. nombre d'occurrence des caractères). Par
conséquent le poids de la racine de l'arbre doit être égal à la longueur de la
conséquent le poids de la racine de l'arbre doit être égal à la longueur de la
chaîne de caractère initiale.
chaîne de caractère initiale.
...
@@ -268,8 +268,9 @@ $(k - r - 1)$ sur $e$ bits.
...
@@ -268,8 +268,9 @@ $(k - r - 1)$ sur $e$ bits.
```python
```python
def compute_k(char: str) -> int:
def compute_k(char: str) -> int:
return DICT_ALPHABET[char]
return DICT_ALPHABET[char]
```
```python
def compute_code(char: str):
def compute_code(char: str):
e, r = compute_vitter_params(len(LIST_ALPHABET))
e, r = compute_vitter_params(len(LIST_ALPHABET))
k_char = compute_k(char)
k_char = compute_k(char)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment