Opencv pythonda k-means algoritmi bilan tasvirlarga ishlov berish


K-Means algoritmi yordamida tasvirni segmentlarga ajratish


Download 0.91 Mb.
bet3/3
Sana02.05.2023
Hajmi0.91 Mb.
#1422734
1   2   3
Bog'liq
6 amaliy

1. K-Means algoritmi yordamida tasvirni segmentlarga ajratish

I. Kutubxonalar va rasmlarni import qilish


Matplotlib, numpy, OpenCV -ni segmentlarga bo'linadigan rasm bilan birga import qiling
import matplotlib as plt
import numpy as np
import cv2
path = 'image.jpg'
img = cv2.imread(path)

II. Tasvirni qayta ishlash


RGB rang maydoniga aylantirish orqali tasvirni qayta ishlash. 2D vektorga aylantirish uchun uni birinchi o'q bo'ylab o'zgartiring, ya'ni agar tasvir (100,100,3) (kenglik, balandlik, kanallar) shaklida bo'lsa, u (10000,3) ga aylanadi. Keyin, uni float ma'lumotlar turiga aylantiring.
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
twoDimage = img.reshape((-1,3))
twoDimage = np.float32(twoDimage)

III. Parametrlarni aniqlash


K-Means algoritmi piksellarni to'plashi kerak bo'lgan mezonlarni aniqlang."K" o'zgaruvchisi pikselga tegishli bo'lishi mumkin bo'lgan guruhlar/guruhlar sonini belgilaydi (segmentatsiya darajasini oshirish uchun siz bu qiymatni oshirishingiz mumkin).
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 2
attempts=10

IV. K-Means algoritmini qo'llang


K o'zgaruvchisi tasodifiy ravishda K turli klasterlarini ishga tushiradi va "center" o'zgaruvchisi bu klasterlarning markazini aniqlaydi. Bu markazlardan har bir nuqtaning masofasi hisoblab chiqiladi va keyin ular klasterlardan biriga tayinlanadi. Keyin ular " label variable" qiymatiga ko'ra turli segmentlarga bo'linadi.
ret,label,center=cv2.kmeans(twoDimage,K,None,criteria,attempts,cv2.KMEANS_PP_CENTERS)
center = np.uint8(center)
res = center[label.flatten()]
result_image = res.reshape((img.shape))
Natija:


K-Means natijasi.
MATLAB matematik hisob-kitoblarni avtomatlashtirish uchun eng qadimgi, puxta ishlab chiqilgan va vaqt sinovidan o'tgan tizimlardan biri bo'lib, matritsali amallarning ilg'or tasviri va qo'llanilishiga asoslangan. Bu tizim nomining o'zida aks ettirilgan - MATrix LABoratory, ya'ni matritsa laboratoriyasi. Biroq, tizim dasturlash tilining sintaksisi shu qadar puxta o'ylanganki, bu yo'nalish matritsalarni hisoblash bilan bevosita qiziqmaydigan foydalanuvchilar tomonidan deyarli sezilmaydi.
MATLAB kutubxonalari raqamli hisob-kitoblarning yuqori tezligi bilan ajralib turadi. Biroq, matritsalar nafaqat chiziqli algebra va matematik modellashtirish masalalarini echish, statik va dinamik tizimlar va ob'ektlarni hisoblash kabi matematik hisoblarda keng qo'llaniladi. Ular dinamik ob'ektlar va tizimlar uchun holat tenglamalarini avtomatik ravishda tuzish va echish uchun asosdir. Matritsalarni hisoblash apparatining universalligi bu sohadagi eng yaxshi yutuqlarni o'zida mujassam etgan MATLAB tizimiga qiziqishni sezilarli darajada oshiradi. tez yechim matritsali vazifalar. Shuning uchun MATLAB uzoq vaqtdan beri maxsus matritsa tizimi doirasidan chiqib, kompyuter matematikasining eng kuchli universal integral tizimlaridan biriga aylandi.

3-rasm. MATLAB
MATLAB tizimining kamchiliklari orasida atrof-muhitning past integratsiyasini (ikkita monitorda ishlash yaxshiroq bo'lgan juda ko'p oynalar mavjud), unchalik tushunarsiz yordam tizimini (xususiy hujjatlar hajmi deyarli yetib boradi) qayd etish mumkin. 5 ming sahifa, bu ko'rishni qiyinlashtiradi) va ma'lum bir MATLAB kod muharriri -dasturlar (4-rasm). Bugungi kunda MATLAB tizimi muhandislik, fan va ta'limda keng qo'llaniladi, ammo shunga qaramay, u sof matematik hisob-kitoblarga qaraganda ma'lumotlarni tahlil qilish va hisob-kitoblarni tashkil qilish uchun ko'proq mos keladi.

Foydalanilgan adabiyotlar.

  1. Image segmentation in OpenCV and Python. D.R.Xasanov,M.R.Tojiyev, O.D.Primqulov. Journal Academica Vol.10,Issue 12,December 2020. India

  2. Gonzalez Rafael C., Richard Woods E. Digital Image Processing – 2 nd edition.2012

  3. https://machinelearningknowledge.ai/image-segmentation-in-python-opencv

Download 0.91 Mb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling