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)
sample = im // 128 * 128 + 64
cv2_imshow(sample)
sample = im // 85 * 85 + 42
cv2_imshow(sample)
sample = im // 64 * 64 + 32
cv2_imshow(sample)
sample = im // 43 * 43 + 22
cv2_imshow(sample)
sample = im // 32 * 32 + 16
cv2_imshow(sample)
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