Traitement d'image 100 coups Q.6. Explication du traitement de réduction de couleur

Traitement d'image 100 coups Q.6. Ceci est un article de commentaire sur le traitement de réduction des couleurs.

Le processus de réduction de couleur limite les types de valeurs possibles pour R (rouge), G (vert) et B (bleu). Cela réduit les couleurs qui peuvent être exprimées.

Dans le sujet principal, il est demandé de réduire les valeurs de R, V et B de 256 types de valeurs (0 à 255) à 4 types de valeurs (32,96,160,224).

Dans l'article d'origine, le processus de réduction de couleur est effectué par ce processus. (Suivant)

def dicrease_color(img):
    out = img.copy()
    out = out // 64 * 64 + 32
    return out

J'ai été surpris qu'il y ait moins de traitement que prévu. Le code de la partie suivante de cette fonction est utilisé pour le traitement de réduction des couleurs.

out = out // 64 * 64 + 32

Le nombre 64 est 256 (0 ~ 255) divisé par 4.

En d'autres termes, ʻout // 64` vérifie quelle classe (en supposant qu'il y a 4 classes telles que 0, 1, 2, 3) lorsque 256 est divisé en quatre.

Et en définissant * 64 + 32, il est défini sur la valeur spécifiée de la classe. (La classe 0 est 32, la classe 1 est 96, la classe 2 est 160, la classe 3 est 224.) Cette fois, il semble que la valeur soit proche du centre de la classe. (Les valeurs appartenant à la classe 0 vont de 0 à 63, avec 32 et 33 au centre) Par exemple, si ʻout // 64 vaut 2 (classe 2), c'est-à-dire si ʻout vaut 128 ~ 191, alors ʻout // 64 devient 2 et * 64 + 32` Il est défini sur la valeur spécifiée (160) de la classe 2.

Si vous pouvez comprendre ce qui précède, vous pouvez réduire la couleur à votre guise, par exemple 2 valeurs chacune, 6 valeurs chacune et 8 valeurs chacune. Vous pouvez faire le traitement. Le code est présenté ci-dessous pour référence. (* J'utilise Google Colaboratory. Un certain traitement est nécessaire pour charger des images, etc. I [Comment utiliser cv2.imshow () avec Google Colab](https://qiita.com/ITF_katoyu/items/ 115528c98d2e558c6fc6) a été mentionnée.)

#Importer des correctifs de support
from google.colab.patches import cv2_imshow

#Importer une image
!curl -o logo.png https://colab.research.google.com/img/colab_favicon_256px.png
import cv2

#Chargez l'image et stockez-la dans img
img = cv2.imread("imori.jpg ", cv2.IMREAD_UNCHANGED)

#Copier img dans une variable appelée im
im = img.copy()

#Afficher l'image
cv2_imshow(im)

ダウンロード (1).png

Classé en 2 valeurs chacun

sample = im // 128 * 128 + 64
cv2_imshow(sample)

ダウンロード (2).png

Classé en 3 valeurs chacun

sample = im // 85 * 85 + 42
cv2_imshow(sample)

ダウンロード (3).png

Classé en 4 valeurs chacun (comme dans l'article d'origine)

sample = im // 64 * 64 + 32
cv2_imshow(sample)

ダウンロード (4).png

Classé en 6 valeurs chacun

sample = im // 43 * 43 + 22
cv2_imshow(sample)

ダウンロード (5).png

Classé en 8 valeurs chacun

sample = im // 32 * 32 + 16
cv2_imshow(sample)

ダウンロード (6).png Il est surprenant que la qualité d'image soit assez bonne, exprimant seulement jusqu'à 8 valeurs pour chacune.

c'est tout. Continuons à travailler sur le traitement d'image à 100 coups.

Recommended Posts

Traitement d'image 100 coups Q.6. Explication du traitement de réduction de couleur
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
Traitement d'image 100 coups Q9, Q10 (filtre) speedup
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image par le remplacement du canal Python 100 Knock # 1
"Data Science 100 Knock (traitement de données structurées)" Explication Python-007
"Data Science 100 Knock (traitement des données structurées)" Explication Python-006
"Data Science 100 Knock (traitement des données structurées)" Explication Python-001
Traitement d'image par Python 100 knock # 12 motion filter
"Data Science 100 Knock (traitement des données structurées)" Explication Python-002
[Python] 100 coups sur la science des données (traitement de données structurées) 021 Explication
"Data Science 100 Knock (traitement des données structurées)" Explication Python-005
"Data Science 100 Knock (traitement de données structurées)" Explication Python-004
[Python] 100 coups sur la science des données (traitement de données structurées) 020 Explication
[Python] 100 coups sur la science des données (traitement de données structurées) 025 Explication
"Data Science 100 Knock (traitement des données structurées)" Explication Python-003
[Python] 100 coups sur la science des données (traitement de données structurées) 019 Explication
[Traitement d'image] Postérisation
traitement d'image python
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 38
Traitement d'image 100 coups ①
100 traitement de la langue frapper 00 ~ 02
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
Traitement d'image avec MyHDL
100 coups de traitement du langage amateur: 17
100 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
100 Traitement du langage Knock-52: Stemming
Premier traitement d'image Python
100 Traitement du langage Knock Chapitre 1
Lire le traitement d'image numérique
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
Extraire la couleur de l'image (RVB)
Traitement d'image avec Python
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
Traitement d'image avec PIL
[Python] 100 coups sur la science des données (traitement de données structurées) 001-010 Impressions + résumé du lien de commentaire