نمایش نتایج 1 تا 4 از 4

نام تاپیک: الگوریتم برای کاهش تعداد رنگهای تصویر

  1. #1

    الگوریتم برای کاهش تعداد رنگهای تصویر

    سلام
    نیاز به یه الگوریتم دارم که بتونم باهاش تعداد رنگهای موجود در یه تصویر رنگی رو کاهش بدم (یعنی در کل میخوام رنگهای تصویر رو محدود و واقعی سازی کنم مثل نرم افزار های تبدیل عکس به نقشه تابلوفرش کامپیوتری که می خوام بدونم از چه الگوریتم و روشی واسه این کار استفاده می کنن؟؟؟)

    مثلا عکسی که 500 نوع رنگ داره رو بازتولید کنم با 50 تا رنگ طوریکه کیفیت زیاد افت نکنه

    محیطی که توش کار میکنم C#‎ هست

    واسه پروژه پایانیم میخوام ضروریه
    با تشکر

  2. #2
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: الگوریتم برای کاهش تعداد رنگهای تصویر

    تو این تاپیک توضیح دادم اگر کد C هم خواستید بفرمایید تا قرار بدم.

  3. #3

    نقل قول: الگوریتم برای کاهش تعداد رنگهای تصویر

    نقل قول نوشته شده توسط mostafa.sataki مشاهده تاپیک
    تو این تاپیک توضیح دادم اگر کد C هم خواستید بفرمایید تا قرار بدم.
    سلام
    خیلی ممنون استاد
    اگه ممکنه اون کد c رو هم که فرمودین لطف کنین
    باتشکر

  4. #4
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: الگوریتم برای کاهش تعداد رنگهای تصویر

    این هم کد مربوط به quantization یا کاهش تعداد رنگ که به زیان C++‎‎ و استفاده از کتابخانه OpenCV هستش.


    void bhQuantizeImage(const IplImage* srcImage,IplImage* dstImage,int colorCount)
    {
    int i, size;

    CvMat *clusters;
    CvMat *points;
    CvMat *color = cvCreateMat (colorCount, 1, CV_32FC3);
    CvMat *count = cvCreateMat (colorCount, 1, CV_32SC1);


    size = srcImage->width * srcImage->height;
    IplImage* dstImg = cvCreateImage(cvGetSize(dstImage),dstImage->depth,dstImage->nChannels);

    clusters = cvCreateMat (size, 1, CV_32SC1);
    points = cvCreateMat (size, 1, CV_32FC3);

    for (i = 0; i < size; i++)
    {
    points->data.fl[i * 3 + 0] = (uchar) srcImage->imageData[i * 3 + 0];
    points->data.fl[i * 3 + 1] = (uchar) srcImage->imageData[i * 3 + 1];
    points->data.fl[i * 3 + 2] = (uchar) srcImage->imageData[i * 3 + 2];
    }

    cvKMeans2 (points, colorCount, clusters, cvTermCriteria (CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 10, 1.0));

    cvSetZero (color);
    cvSetZero (count);
    for (i = 0; i < size; i++)
    {
    int idx = clusters->data.i[i];
    int j = ++count->data.i[idx];;
    color->data.fl[idx * 3 + 0] = color->data.fl[idx * 3 + 0] * (j - 1) / j + points->data.fl[i * 3 + 0] / j;
    color->data.fl[idx * 3 + 1] = color->data.fl[idx * 3 + 1] * (j - 1) / j + points->data.fl[i * 3 + 1] / j;
    color->data.fl[idx * 3 + 2] = color->data.fl[idx * 3 + 2] * (j - 1) / j + points->data.fl[i * 3 + 2] / j;
    }

    for (i = 0; i < size; i++)
    {
    int idx = clusters->data.i[i];
    dstImg->imageData[i * 3 + 0] = (char) color->data.fl[idx * 3 + 0];
    dstImg->imageData[i * 3 + 1] = (char) color->data.fl[idx * 3 + 1];
    dstImg->imageData[i * 3 + 2] = (char) color->data.fl[idx * 3 + 2];
    }


    cvCopyImage(dstImg,dstImage);
    cvReleaseImage(&dstImg);
    cvReleaseMat (&clusters);
    cvReleaseMat (&points);
    cvReleaseMat (&color);
    cvReleaseMat (&count);
    }

تاپیک های مشابه

  1. پاسخ: 13
    آخرین پست: دوشنبه 01 خرداد 1391, 21:02 عصر
  2. پاسخ: 4
    آخرین پست: شنبه 06 آذر 1389, 16:03 عصر
  3. آرایه غیر مرتب بهترین الگوریتم برای نمایش تعداد تکرار
    نوشته شده توسط sohrab o در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 9
    آخرین پست: پنج شنبه 24 آبان 1386, 00:10 صبح
  4. الگوریتم برای محاسبه تابع آکرمان
    نوشته شده توسط leyla در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 3
    آخرین پست: شنبه 25 مهر 1383, 15:15 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •