این الگوریتم نیز بهمانند الگوریتم LBG تصویری را بهعنوان ورودی دریافت نموده و به تعدادی بلاک تقسیم کرده و سپس هر بلاک به بردار تبدیل میشود. در الگوریتم K-meansباید از ابتدا تعداد خوشه ها مشخص شود. که تمام بردارها نیز باید در داخلK خوشه قرار بگیرند.برای هر K نیز باید مرکزی در نظر گرفت. در چندی سازی برداری، کدبوکها همان خوشه ها (K) هستند که ایجاد اولین کدبوک با انتخاب K بردار تصادفی از مجموعه بردارهای آموزشی که کدوکتور یا همان کلمه کد نامیده می شود انجام میگیرد. کدبوکها همان خوشه هستند و کلمه کدها، همان مراکز خوشه.
بعد از مشخص شدن اعضای هر کدبوک، باید مراکز یا کلمه کدهای جدید ایجاد شوند که برای اینکار، باید میانگین بردارهای موجود در هر خوشه محاسبه و جایگزین کلمهکدهای قبلی شوند. این روند ادامه مییابد تا مراکز خوشه ثابت بمانند. به این ترتیب کدبوکها ایجاد میشوند و باید بهترین کدبوک جهت بازیابی تصویر انتخاب شود که میتوان از تابع fitness برای یافتن بهترین جواب استفاده کرد. این تابع برازش فقط جهت ارزش گذاری مورد استفاده قرار میگیرد و با تابع برازش در الگوریتم ژنتیک متفاوت است.
بعد از انتخاب کدبوک نهایی، باید ایندکس بهترین کلمه کد هر بردار آموزشی در جدول ایندکس ذخیره میشود که برای بازیابی تصویر فشرده شده،ایندکس به کلمه کد اشاره کرده و کلمه کد جایگزین محتویات بردار آموزشی شده و به این ترتیب، تصویر بازیابی شده به صورت فشرده شده بازیابی میشود. و در این الگوریتم نیز مانند الگوریتم های دیگر، جهت مقایسه میزان اعوجاج تصویر اصلی و تصویر بازیابی شده از معیارهای MSE و PSNR استفاده میکند. لازم به ذکر است که میتوان مقدار MSE را برای هر خوشه و همچنین MSE خالص را بدست آورد، حتی تکرار الگوریتم میتواند تا زمانیکه MSE خالص به همگرایی برسد تکرار شود.