ألوان الصور
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 41 من 51.
لدى الطابع بالشاشة بضعة أحبار، وليس ملايين الألوان. تختار k-means أفضل بضعة ألوان لأي صورة:
لصورة ملوّنة الشكل (الصفوف، الأعمدة، 3): الأحمر والأخضر والأزرق لكل بكسل، وتتراوح قيمة كل منها من 0 إلى 1. يحوّل تغيير الشكل البكسلات إلى بيانات:
pixels = image.reshape(-1, 3)
km = KMeans(n_clusters=4, n_init=10, random_state=0).fit(pixels)
poster = km.cluster_centers_[km.labels_].reshape(image.shape)
ax.imshow(poster)كل مركز هو لون. يتيح استخدام التسميات لفهرسة المراكز إعطاء كل بكسل لون مركزه؛ وتعيد عملية إعادة التشكيل طي الصفوف لتكوين صورة.
التحدي
متوسطيطبع استوديو الملصقات صورة بحيرة جبلية باستخدام k أحبار. ترسم الشيفرة الابتدائية الصورة ذات الأبعاد 40 × 60 image، وتقرأ k، وتُعِدّ مخططًا بعنوان.
- حوّل الصورة إلى صف واحد لكل بكسل، واعثر على
kألوان باستخدام خوارزمية k-means. - أعِد تلوين كل بكسل بلون مركزه، ثم أعد ترتيب الصفوف لتكوين صورة.
- ارسمها على
axواعرضها.
مثل مشهد الغروب هذا باستخدام 5 أحبار:
لا يطبع برنامجك أي شيء: يصف Coddy صورتك وأحبارها. ثم جرّب قيمًا أخرى لـ k: متى يحصل القارب الأحمر على حبْره الخاص؟
جرّب بنفسك
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# يرسم بحيرة جبلية بأبعاد 40 في 60: سماءً، وقمةً ثلجية، وغابةً، وماءً، وقاربًا أحمر
def paint_lake():
image = np.zeros((40, 60, 3))
for r in range(40):
for c in range(60):
if 30 <= r <= 31 and 10 <= c <= 17 - (r - 30) * 2:
image[r, c] = [0.8, 0.15, 0.1]
elif r >= 27:
t = (r - 27) / 12
image[r, c] = [0.1, 0.45 - 0.2 * t, 0.65 - 0.2 * t]
elif r >= 21:
image[r, c] = [0.1, 0.35 + 0.05 * (c % 3), 0.15]
elif r >= abs(c - 34) + 4 and r < 10:
image[r, c] = [0.95, 0.95, 0.97]
elif r >= abs(c - 34) + 4:
image[r, c] = [0.45, 0.42, 0.45]
else:
image[r, c] = [0.55 + r / 50, 0.75 + r / 120, 0.95]
return np.round(image, 3)
# لا تغيّر الأسطر أدناه
image = paint_lake()
k = int(input())
fig, ax = plt.subplots()
ax.set_title(f"{k} inks")
ax.axis("off")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت