PDA

View Full Version : مقاله: پردازش تصویر



sokote_bi_payan
سه شنبه 21 آبان 1387, 04:29 قبل از ظهر
به نام خدا

با سلام خدمت اساتید؛

تو این تاپیک قصد دارم در مورد پردازش تصویر بحث کنیم و هر کسی از دوستان که کاری تو این زمینه انجام داده لطفا قرار بده

پیکسل : کوچکترین جزء یک تصویر را پیکسل گویند.

هر تصویر شامل n پیکسل افقی در m پیکسل عمودی که هر کدام داری یک رنگ میباشد و با قرار گرفتن این پیکسلها در کنار یکدیگر تصویر ما شکل می گیرد.

پردازش تصویر :

امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته می‌شود که شاخه‌ای از دانش رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.

پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد(مانند چاپگر یا نمایشگر )است، در حالی که بینایی ماشین به روشهایی می‌پردازد که به کمک آنها می‌توان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.

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


پیدا کردن 4 گوش ها در یک تصویر:

sokote_bi_payan
سه شنبه 21 آبان 1387, 04:35 قبل از ظهر
در تصاویری که در زیر آمده در قسمت سمت چپ تصویر اصلی ، و در سمت راست تصویر بعد از پردازش را مشاهده می نمایید.
همچنین با نمایش پیغام تعداد چهارگوش ها مشخص می باشد.

sokote_bi_payan
سه شنبه 21 آبان 1387, 04:37 قبل از ظهر
به نظر شما چگونه می توان از میان هزاران پیکسل( با رنگ های مختلف ) چهارگوش ها را تشخیص داد؟

روشی که من به صورت کاملا ابتکاری انتخاب کردم به این صورت می باشد ( مطمئنا ممکن است ایراداتی نیز داشته باشد)

پیدا کردن رنگ پس زمینه
تا وقتیکه تمام پیکسل ها را مشاهده نکردی تابع جستجو را فراخوانی کن
ابتدا از سمت راست آن پیکسل شروع به حرکت کن
تا وقتیکه به پایان نرسیدی و رنگ پیکسل خانه بعدی برابر با پیکسل مورد نظر است کار را ادامه بده
برای سمت پایین ، چپ و بالا نیز این کار را ادامه بده
سپس تعداد پیکسل های بدست آمده از بالا را مورد بررسی قرار بده
اگر نقاط مورد نظر مانند یک چهارگوش می باشد ، به تعداد 4 گوش ها یکی اضافه کن
نقطه بالا-چپ و نقطه پایین-راست را ذخیره کن
بعد از اتمام کار نقاط را رسم کن

sokote_bi_payan
سه شنبه 21 آبان 1387, 04:41 قبل از ظهر
پیدا کردن رنگ پس زمینه

اگر با روشی که در قسمت قبل گفتم رنگ پس زمینه را مشخص نمی کردیم ممکن بود خود پس زمینه نیز چهارگوش حساب می شد.

با انتخاب رنگ پس زمینه در وقت خود نیز صرفه جویی کرده ایم. چون دیگر نیاز به بررسی آن نقاط نداریم.

در این قسمت از دو الگوریتم برای مرتب کردن آرایه ( با روش Heap ) و جستجوی آرایه (به صورت دودویی ) استفاده شده است. که با این کار سرعت کار خود را بسیار افزایش دادیم.

sokote_bi_payan
سه شنبه 21 آبان 1387, 04:59 قبل از ظهر
بررسی پیکسل ها:


private void Search_Color()
{
/*//////////
* algoritm :
* ebteda range pas zamine bayad moshakhas she
* az khaneye aval shoro kon be samt rast harkat kon
* 1- agar ghablan dide nashode adad ra negah dar va ba khaneye badi
* moghayese kon ta vaghtike be payane satr naresidi ya inke
* khaneye badi mosavis edame bede
*
*/

/////// moshakhas shodane range pas zamine
if (Back_Color == 0)
Background_Color();
/////////////////////////
bool[,] serached = new bool[bmp.Height, bmp.Width];

for (int i = 0; i < bmp.Height; i++)
{
for (int j = 0; j < bmp.Width ; j++)
{
int pix = 0;
pix = bmp.GetPixel(j,i).ToArgb();
int ekhtel = Ekhtelaf(pix);
//if (serached[i, j] == false && pix != Back_Color && pix != Back_Color1 && pix != Back_Color2)
if (serached[i, j] == false && (pix != Back_Color && !(pix - Back_Color <= ekhtel && pix - Back_Color >= 0)))
{
//// bayad az samte rast shoro konim be gardesh
Search_right(pix,i,j, ref serached);

}
}

sokote_bi_payan
سه شنبه 21 آبان 1387, 05:01 قبل از ظهر
حالا باید به ترتیب از سمت راست شروع کنیم


private void Search_right(int pixel, int row , int col, ref bool[,] searched)
{

Point P1, P2;
/// mikhaym bebinim chan ta be rast raftim chan ta be chap ,... ta badan betonim
/// motevajeh shim in 4 goosh hast ya na
int Rast=0, Chap=0, Paeen=0, Bala = 0;
int i = row , j = col;

P1 = new Point(row,col);

int ekhtel = Ekhtelaf(pixel);
for (; (j < bmp.Width && (bmp.GetPixel(j, i).ToArgb() == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >=0 ))); j++)
{
Rast++;
searched[i, j] = true;
}

// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
j--;

Paeen = Search_Down(pixel ,ref i ,ref j , ref searched);
P2 = new Point(i, j);
Chap = Search_Left(pixel,ref i,ref j, ref searched);
Bala = Search_UP(pixel, ref i, ref j, ref searched);

int avg = (Bala + Paeen + Chap + Rast) / 4;

if (avg >= 9 && Bala >= 9 && Paeen >= 9 && Chap >= 9 && Rast >= 9)
{
int avg_amodi, avg_ofoghi;
avg_amodi = (Bala + Paeen) / 2;
avg_ofoghi = (Chap + Rast) / 2;
if (((avg_amodi - Bala) >= -50 && (avg_amodi - Bala) <= 50) && ((avg_amodi - Paeen) >= -50 && (avg_amodi - Paeen) <= 50) && ((avg_ofoghi - Chap) >= -50 && (avg_ofoghi - Chap) <= 50) && ((avg_ofoghi - Rast) >= -50 && (avg_ofoghi - Rast) <= 50))
{
sbp_point[Count_Rectangle] = new SBP_Point();
sbp_point[Count_Rectangle].Point_Start = P1;
sbp_point[Count_Rectangle].Point_Finish = P2;

Count_Rectangle++;
/// dakhele 4gosh niz bayad begooem ke digar search nashavad
Searched_into_rect(P1, P2, ref searched);
}
}

}

private int Search_Down(int pixel, ref int row,ref int col, ref bool[,] searched)
{
int paeen = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (i < bmp.Height && (bmp.GetPixel(j, i).ToArgb()) == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); i++)
{
paeen++;
searched[i, j] = true;

}
}
catch (Exception ex) { }
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
i--;

row = i;
col = j;
}
return paeen;
}

private int Search_Left(int pixel,ref int row, ref int col, ref bool[,] searched)
{
int chap = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (j > 0 && (bmp.GetPixel(j, i).ToArgb()) == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); j--)
{

chap++;
searched[i, j] = true;

}
}
catch (Exception ex)
{

}
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
j++;
row = i;
col = j;
}
return chap;
}
private int Search_UP(int pixel,ref int row,ref int col, ref bool[,] searched)
{
int bala = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (i > 0 && ((bmp.GetPixel(j, i).ToArgb()) == pixel) || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); i--)
{
bala++;
searched[i, j] = true;
}
}
catch (Exception ex)
{
}
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
i++;
row = i;
col = j;
}
return bala;
}

sokote_bi_payan
سه شنبه 21 آبان 1387, 05:12 قبل از ظهر
و حالا اینم از سورس این پروژه

خیلی دوست دارم دوستان نظر بدین.

این پروژه صد در صد ایراد داره لطفا هر چی به ذهنتون می رسه بگید

خیلی ممنون

موفق باشید

یا علی

دوستان اگه کس دیگه ای هم تو این زمینه کار کرده لطفا کارشو بذاره

منم اگه ادامه دادم این کارو اینجا ان شاءالله حتما می ذارم

aliaaa
چهارشنبه 22 آبان 1387, 12:39 بعد از ظهر
سلام دوستان من یه نرم افزار دارم که برای پنهان کردن اطلاعات درون تصاویر هست به این علم میگن steganography
روش کاراینطوریه که اگه حالت ساده ی کار رو بگیریم باید از بیت های کم ارزش LSB پیکسل ها استفاده کرد و اطلاعات (فایل) خودمون رو در آنها پنهان کنیم.
نرم افزار من:
www.sourceforge.net/projects/AnyFile2Image
خوشحال می شم نظراتتون رو بشنوم.

sokote_bi_payan
شنبه 25 آبان 1387, 04:11 قبل از ظهر
دوستان به نظرتون اگه بخوایم بفهیم تو تصویر داده شده آیا دایره به کار گرفته شده یا نه ؟ به نظرتون چیکار باید کنیم ؟

بیتافرهی
دوشنبه 27 آبان 1387, 07:46 قبل از ظهر
آيا منظور از پردازش تصوير اين نيست كه هر عكسي كه به برنامه بدهيم تشضيص دهد آيا با عكس قبلي كه در بانكش بوده،مطابقت دارد يا نه؟حتي عكس انسان.
در ضمن اين برنامه اي كه شما نوشتيد ،آيا امكانش هست كه هر نوع عكسي را كاربر انتخاب كند؟
(از نظر فرمت و تصاوير واقعي و...)
اين عكس ها را چگونه در بانكتان ذخيره كرده ايد؟

shask00l
دوشنبه 27 آبان 1387, 12:32 بعد از ظهر
با تشکر از شما دوست گرامی و مطالب مفیدتون . من هم قبلا روی این مبحث زیاد فکر کردم ولی فرصتی نبود تا افکارم رو اجرا کنم . یکی از مشکلاتی که من داشتم این بود که اگر مربع با مستطیل های داخل عکس با زاویه باشند چه . البته میتوان محل 4 گوشه مربع را محاسبه کرد ولی روش مناسبی برای استخراج مربع از داخل عکس به ذهنم نرسیده البته 1کی 2 تا روش به ذهنم رسید ولی فکر نکنم اصولی باشند . متاسفانه حالا فرصت مطرح کردن روشها را ندارم . انشا الله وقتی دیگر
موفق و پیروز باشید

sokote_bi_payan
دوشنبه 27 آبان 1387, 12:42 بعد از ظهر
راهی که شرکت های بزرگ روش کار می کنند میشه گفت که ابتدا لبه ها را پیدا می کنند بعد اون لبه ها را بررسی می کنند

مثلا تو لایبری open CV هر عکسی و که می دادی می تونست خیلی راحت چهارگوش ها را تشخیص بده

متاسفانه ماها (مخصوصا خودم) منتظریم تا یه فرجی از اون ور آب بشه و ما ازش استفاده کنیم.

linux
دوشنبه 27 آبان 1387, 12:45 بعد از ظهر
قبل از هر کاری باید ببینید قبل از شما چکارها کردند به چه نتایجی رسیدن ، کتاب و نوشته مناسب پیدا کنید و بخوانید ، شاید احتیاج به دانش بیشتری داشته باشید
حتما این کتاب را بخوانید
http://www.imageprocessingplace.com/DIP-3E/dip3e_main_page.htm

sokote_bi_payan
دوشنبه 27 آبان 1387, 12:50 بعد از ظهر
تو اون پروژه ای که من گذاشتم یه متد هم واسه اینکه بتونه عکس و تبدیل به عدد کنه گذاشتم

پیشنهاد می کنم که یه دیتاگرید بذارید و نتیجه کار و ببینید که رنگ هایی که تو اون عکس به کار برده شده چه اعدادی داره
جالب بود واسه خودم . من یه چهارگوش مشکی رسم کردم اما موقعی که از این متد استفاده کردم متوجه شدم همه این پیکسل ها به رنگ مشکی نیست
به نظرتون چی کار باید کرد؟
من گفتم میشه یه اختلافی در نظر بگیریم یعنی واسه هر رنگ یه محدوده بگیریم هر عددی تو این محدوده بود بگیم فلان رنگیه

این جوری تعداد رنگهامون کمتر میشه

آقای لینوکس نظر شما چیه ؟

hamed aj
دوشنبه 27 آبان 1387, 19:19 بعد از ظهر
با سلام

پشتکار شما عالی هست، همینطور ادامه بدین. البته پیشنهاد میکنم سعی کنید اول کارها و ایده های دیگران رو مشاهده کنید و ادامه دهنده راه اونها باشید.

در مورد روش انجام اینکار (تعداد مربع ها)، شما سعی کردین از الگوریتم های سنتی استفاده کنید. بازده این روش در پردازش تصاویر خیلی پایین هست. مثلاً فرض کنید مربع ها رو بچرخونن و . . .

استفاده از روشهای CI یا هوش محاسباتی (شبکه های عصبی مصنوعی - الگوریتم زنتیک - منطق فازی) بهترین علوم برای کاری هست که مدنظر شماست.

برای کار در زمینه Image Processing هم بهتره از نرم افزار Matlab استفاده کنید که Toolbox بسیار قوی در این زمینه داره و نیازی نیست که توابع مورد نظرتون رو خودتون بنویسید.

موفق باشید

hamed aj
دوشنبه 27 آبان 1387, 19:27 بعد از ظهر
آيا منظور از پردازش تصوير اين نيست كه هر عكسي كه به برنامه بدهيم تشضيص دهد آيا با عكس قبلي كه در بانكش بوده،مطابقت دارد يا نه؟حتي عكس انسان.
در ضمن اين برنامه اي كه شما نوشتيد ،آيا امكانش هست كه هر نوع عكسي را كاربر انتخاب كند؟
(از نظر فرمت و تصاوير واقعي و...)
اين عكس ها را چگونه در بانكتان ذخيره كرده ايد؟


یکی از مقاصد Image Processing بازیابی تصاویر یا (Image Retrieval) می باشد (منظورم بازیابی محتوی محور تصاویر هست اگر اشتباه نکنم بهش CBRI گفته می شود)

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

sokote_bi_payan
دوشنبه 27 آبان 1387, 22:33 بعد از ظهر
خیلی ممنون حامد جان -

می دونم لایبری های بزرگی تو این زمینه هست من کمی با Open CV کار کردم که مال شرکت اینتل هست.

هدف من این بود که یه کنجکاویه قشنگی تو این زمینه داشتم دوست داشتم خودم به این مسئله پی ببرم

روشی که من رفتم می دونم خیلی ایراد داره ولی شیرینیه خاص خودش و هم داره

sokote_bi_payan
دوشنبه 27 آبان 1387, 22:39 بعد از ظهر
آيا منظور از پردازش تصوير اين نيست كه هر عكسي كه به برنامه بدهيم تشضيص دهد آيا با عكس قبلي كه در بانكش بوده،مطابقت دارد يا نه؟حتي عكس انسان.
در ضمن اين برنامه اي كه شما نوشتيد ،آيا امكانش هست كه هر نوع عكسي را كاربر انتخاب كند؟
(از نظر فرمت و تصاوير واقعي و...)
اين عكس ها را چگونه در بانكتان ذخيره كرده ايد؟

من تو صفحه اول پردازش تصویر رو توضیح دادم


پردازش تصویر :

امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته می‌شود که شاخه‌ای از دانش رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.

پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد(مانند چاپگر یا نمایشگر )است، در حالی که بینایی ماشین به روشهایی می‌پردازد که به کمک آنها می‌توان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود

shask00l
دوشنبه 27 آبان 1387, 23:18 بعد از ظهر
خوب /.... خدا رو شکر فرصتی پیش اومد تا باز هم بتونم بنویسم .

توی پست قبلیم گفته بودم که روی این مسئله خیلی فکر کردم ولی افکارم رو نتونستم اجرا کنم . کاری که میخواستم انجام بدم این بود که برنامه 1 صفحه اسکن شده بگیره (داخل این صفحه تعداد نا معلومی عکسهای 3*4 هست) و هر عکسی رو که پیدا میکنه جدا کنه و بریزه توی یه picturebox . البته کار با عکس مشکلات زیادی داره از جمله اینکه تعداد رنگهای استفاده شده نامعلومه . لبه ها کاملا منظم نیستند . ممکنه رنگ پس زمینه عکس با پس زمینه صفحه یکی باشه و ... ترجیح میدم زیاد به مسائل این مدلی گیر ندم و فقط روشهایی که به این تاپیک مربوط میشه رو توضیح بدم .

روشی که من برای پیدا کردن مربع ها طراحی کردم تا حدودی مثل روش شماست . یعنی پیکسل به پیکسل تصویر رو بررسی میکنه .البته باید 1 رنگ خنثی هم براش تعریف کنیم . بعدا توضیح میدم که این رنگ به چه دردی میخوره. وقتی به مخالف رنگ پس زمینه رسید از الگوریتم floodFill برای پیدا کردن تمام پیکسل های اون محدوده استفاده میکنه . با استفاده از این روش شما میتونید شکل های نامنظم رو هم از تصویر اصلی جدا کنید چه برسه به شکل های منظم . این الگوریتم دقیقا کاری رو میکنه که سطل رنگ توی painbrush انجام میده . با این تفاوت که تمام پیکسلهای اون محدوده رو میخونه و میریزه توی یه picture box دیگه .این الگوریتم از روش بازگشتی استفاده میکنه. اگه خواستید بگید تا بیشتر در مورد این الگوریتم توضیح بدم .
بعد از اینکه کارمون با شکل پیدا شده تموم شد اونو به رنگ خنثی که قبلا تعربف کردیم در میاریم و موقع چک کردن پیکسل های بعدی چک میکنیم که رنگ اونها خنثی نباشه در غیر این صورت اون پیکسلها رو نادیده میگیریم .

برای جدا کردن شکلهای پیدا شده هم 1 راهی پیدا کردم . میتونیم 1 آرایه از کلاس picturebox بسازیم (دقیقا با سایز picturebox اصلی) و وقتی آبجکتی رو توی تصویر اصلی پیدا کردیم به ترتیب به اولین picturebox خالی توی آرایه انتقال بدیم. بعد از اینکه کارمون با تصویر اصلی تموم شد میتونیم دونه دونه این تصاویر رو از توی picturebox های مربوطه clip کنیم . در آوردن 1 تصویر از توی یک picturebox نسبت به در آوردن چنتا تصویر از توی یک picturebox کار زیاد پیچیده ای نیست .

.... زیاد فک زدم . اگه نظری داشتید در مورد این نوشته همین جا پست کنید.

sokote_bi_payan
سه شنبه 28 آبان 1387, 14:33 بعد از ظهر
Shask001 سلام خوش آمدید

مطلبت جالب بود اگه دوست داشتی خوشحال میشم الگوریتم تو ببینیم

فکر می کنم خیلی شبیه کار خودم باشه

حالا از دوستانی که تو این زمینه کار کردن می خواستم بپرسم

حالا اگه من بتونم لبه ها رو متوجه بشم از کجا یه شکل هندسی و بتونم متوجه بشم ؟

فکر کنم باید دنبال فرمولی چیزی باشم درسته ؟

sokote_bi_payan
یکشنبه 03 آذر 1387, 02:12 قبل از ظهر
با اینکه این تاپیک اصلا دیگه ارزش نداره آدم روش کار کنه (به دلیل نظرات و توجهات کم) ولی می خوام مبحث Open Cv رو شروع کنم

sokote_bi_payan
یکشنبه 03 آذر 1387, 02:17 قبل از ظهر
قبل از اینکه بحث و شروع کنم این فایل و می ذارم تا بدونیم چی جوری میشه از لایبری CV استفاده کرد. چون آدم ( من که خودم اینجوریم شما رو نمی دونم) تا به صورت عملی کار نکنه هر چی واسش صحبت کنن همون صحبت می مونه و زیاد فایده ای نداره

sokote_bi_payan
سه شنبه 05 آذر 1387, 02:53 قبل از ظهر
تویه سایت Www.HAmedHabibi.Com یه مطلب برای پیدا کردن لبه ها پیدا کردم گفتم اینجا بذارم تا دوستان استفاده نمایند.

پیدا کردن لبه :

لبه های تصویر پیکسل هایی از تصویر هستند که در آن پیکسل ها اختلاف شدت پیکسل های همسایه زیاد باشد. برای پیدا کردن لبه های تصویر از تصویر در جهت x و y مشتق گیری می کنیم. سپس مقدار گرادیان تصویر را در هر نقطه از تصویر محاسبه می کنیم و پیکسل هایی از تصویر را که مقدار گرادیان آن ها از یک مقدار آستانه بزرگ تر باشند ، به عنوان لبه تصویر در نظر می گیریم. نحوه محاسبه گرادیان در ادامه مورد بررسی قرار گرفته است.


برای محاسبه مشتق مرتبه اول فیلترهای بالاگذر مختلفی طراحی شده اند که در این میان ، فیلترهای Prewitt ، Sobel و Frei-Chen از اهمیت بالاتری برخوردار هستند. هریک از فیلترهای یاد شده از دو ماسک مختلف تشکیل یافته اند که یکی از ماسک ها مشتق در جهت x و ماسک دیگر مشتق در جهت y را در هر نقطه از تصویر محاسبه می کنند. نکته قابل توجه اینکه ماسک مشتق گیری در جهت x ، ترانهاده ماسک مشتق گیری در جهت y و بالعکس می باشد.

توجه :

نحوه اعمال فیلترها بر روی تصویر در بخش پردازش در حوزه مکانی شرح داده شده است.

محاسبه گرادیان :

با فرض اینکه در نقطه (a,b) ، Gx مشتق در جهت x و Gy مشتق در جهت y را نشان دهند ، گرادیان تصویر در نقطه (a,b) از رابطه زیر به دست می آید :

http://www.hamedhabibi.com/Images/toturials/formules/grdient1.jpg یا http://www.hamedhabibi.com/Images/toturials/formules/grdient2.jpg

در صورتی که رابطه زیر برقرار باشد ، گوییم نقطه (a,b) یک لبه است :

http://www.hamedhabibi.com/Images/toturials/formules/grdientThresh.jpg

که در آن T یک مقدار آستانه است. حال به بررسی هریک از فیلترها می پردازیم.

sokote_bi_payan
سه شنبه 05 آذر 1387, 03:05 قبل از ظهر
فیلتر Roberts :

مقادیر فیلتر Roberts در جهت x و y در شکل زیر نشان داده شده است:

http://www.hamedhabibi.com/Images/toturials/roberts.jpg

فیلتر Prewitt :

مقادیر فیلتر Prewitt در جهت x و y در شکل زیر نشان داده شده است:

http://www.hamedhabibi.com/Images/toturials/prewitt.jpg

فیلتر Sobel :

مقادیر فیلتر Soble در جهت x و y در شکل زیر نشان داده شده است:

http://www.hamedhabibi.com/Images/toturials/sobel.jpg

فیلتر Frei-chen :
مقادیر فیلتر Frei-chen در جهت x و y در شکل زیر نشان داده شده است:

http://www.hamedhabibi.com/Images/toturials/frei.jpg

فیلتر Kirstch :
مقادیر فیلتر Kirstch در جهت x و y در شکل زیر نشان داده شده است:


http://www.hamedhabibi.com/Images/toturials/kircsh.jpg

apachi2007
سه شنبه 05 آذر 1387, 14:00 بعد از ظهر
سلام به همه دوستان
آقا من درگیر یه پروژه تشخیص ارقام هستم ولی راستشو بخاین خیلی وقته که گیجشم
کسی میتونه در این رابطه کمکم کنه
پروژه اینه که باید یه عکس که شامل یه رقم از 1 تا 9 به فارسی هس رو بگیره و تشخیص بده چنده
ممنون

shytonak
سه شنبه 05 آذر 1387, 14:25 بعد از ظهر
دوستان کسی میتونه یه راهنمایی کنه که چطور مکان یه رنگ خاص رو پیدا کنیم.مثلا بگه این پیکسل ها دارای رنگ قرمز هستند یا دور اون یه خط بکشه.

sokote_bi_payan
سه شنبه 05 آذر 1387, 20:04 بعد از ظهر
بله دوست عزیز میشه اینکارو کرد . تو بحث شناسایی ارقام ( یا نوشته ) اول از هم باید برچسب گذاری کرد بدین صورت که با استفاده از پیدا کردن لبه ها هر قسمت را نام گذاری کنیدو...

sokote_bi_payan
سه شنبه 05 آذر 1387, 20:06 بعد از ظهر
باز این مطلب تو سایت Www.HamedHabibi.com پیدا کردم

برچسب زنی اجزای متصل

یکی از مهمترین مراحل در بخش بندی تصویر جداسازی اشیاء مختلف برروی تصویر به صورت تصاویر مجزا از هریک است. به عنوان مثال تصویر زیر شامل 16 شی مجزا است که هریک از این اشیا را یک جز متصل می گوییم.


روش های مختلفی برای این منظور وجود دارد، در این مقاله ما به بررسی سه روش زیر خواهیم پرداخت :

· برچسب زنی به روش تکراری
· برچسب زنی به روش بازگشتی
· برچسب زنی به روش پیمایش سطحی
· برچسب زنی به روش پیمایش عمقی
از میان روش های فوق برچسب زنی به روش عمقی ایده آل ترین روش برچسب زنی است، هر دو پارامتر یک الگوریتم کارآمد را با خود دارد. بدین معنی که الگوریتم برچسب زنی اجزای متصل به روش عمقی هم سریع بوده و هم از حافظه بسیار کمی برای این منظور استفاده می کند.

برچسب زنی به روش سطحی نیز از نظر سرعت اجرا با سرعت اجرای برچسب زنی عمقی تقریبا برابر است، پیچیدگی مکانی (فضای حافظه مورد نیاز) آن دو نیز بر حسب اینکه شی پهنای بیشتری داشته باشد یا از عمق بیشتری برخوردار باشد نسبت به هم دیگر متفاوت است. برچسب زنی بازگشتی و تکراری نسبت به دو روش دیگر از کارآیی پایین تری برخوردارند و مطرح کردن آن ها در اینجا صرفا جهت آشنایی خوانندگان با این روش ها است.

توجه:

در همه روش های فوق برچسب زنی اجزای متصل را بر روی تصویر دو سطحی انجام می دهیم. همچنین در همه این روش ها تصویر را از بالا به پایین و از چپ به راست پیمایش می کنیم.


برچسب زنی اجزای متصل به روش تکراری

برچسب زنی به روش تکراری یک روش دو مرحله ای است که در مرحله اول با پیمایش تصویر از بالا به پایین و از چپ به راست به هر پیکسل شی ای، بر اساس شرایط زیر برچسبی را انتساب می دهیم:

1. در همسایگی 4 گانه پیکسل p(i,j) ، اگر پیکسل بالایی p(i-1,j) و پیکسل سمت چپی p(i,j-1) دارای برچسب X باشند، پیکسل p(i,j) نیز برچسب X خواهد داشت

2. در همسایگی 4 گانه پیکسل p(i,j) ، اگر پیکسل بالایی p(i-1,j) یا پیکسل سمت چپی p(i,j-1) دارای برچسب X باشند، پیکسل p(i,j) نیز برچسب X خواهد داشت

3. در همسایگی 4 گانه پیکسل p(i,j) ، اگر پیکسل بالایی p(i-1,j) برچسب X و پیکسل سمت چپی p(i,j-1) دارای برچسب Y باشند ( X و Y باهم برابر نیستند)، برچسب پیکسل p(i,j) را برابر X قرار داده و در جدول معادل ها X و Y را وارد می کنیم

4. در همسایگی 4 گانه پیکسل p(i,j) ، اگر پیکسل بالایی p(i-1,j) و پیکسل سمت چپی p(i,j-1) هیچیک دارای برچسب نباشند ، به پیکسل p(i,j) برچسب جدیدی برابر Z قرار می دهیم.


هنگام انتساب برچسب به پیکسل ها معمولا از مقادیر عددی استفاده می کنیم. جدول معادل ها نیز شامل همه برچسب های معادل هم خواهد بود. در مرحله دوم برچسب های معادل با هم ادغام شده و برچسب منحصربفردی را برای هریک از اشیا تولید می کند. اگر X و Y دو برچسب معادل از جدول معادل ها باشند، زمانی که X<Y باشد همه برچسب های Y را برابر X قرار می دهیم و در نتیجه به هریک از اجزای متصل برچسب منحصربفردی منتسب می شود.


برچسب زنی اجزای متصل به روش بازگشتی

در برچسب زنی به روش بازگشتی همگام با پیمایش تصویر از بالا به پایین و از چپ به راست ، با رسیدن به یک پیکسل شی ای، با استفاده از یک الگوریتم بازگشتی هریک از همسایه های 8-گانه این پیکسل که نشان دهنده یک پیکسل شی ای باشند را تا رسیدن به یک پیکسل زمینه به طور جداگانه پیمایش می کنیم.

یکی از بزرگترین عیب های این روش وابستگی به ماشین این روش است. همانطور که می دانید هنگام فراخوانی های بازگشتی یک تابع، اطلاعات تابع در پشته ذخیره می شود. اندازه پشته نیز در هر ماشین متفاوت می باشد. از این رو در صورتی که اندازه شی بر روی تصویر بزرگ باشد، ممکن است به علت فراخوانی ها زیاد تابع بازگشتی، سرریزی در پشته روی دهد. در همین حال ممکن است همین شی بر روی ماشین دیگر بدون بروز خطای سرریزی پشته اجرا شود. همچنین فراخوانی بازگشتی تابع باعث کاهش سرعت اجرای الگوریتم می شود.


و..

sokote_bi_payan
سه شنبه 05 آذر 1387, 20:08 بعد از ظهر
پردازش تصویر در MATLAB

برچسب زنی اجزای متصل در MATLAB با استفاده از تابع bwlabel انجام می پذیرد

sokote_bi_payan
چهارشنبه 06 آذر 1387, 04:02 قبل از ظهر
البته یه چیز دیگه به ذهنم رسید اونم این که میشه با استفاده از اسکلت بندی ( که بعدا در همین تاپیک میذارم) خیلی راحت تر عدد مورد نظرتون و حدس بزنید.

با این روش به نظرم اگه فونت های مختلفی هم باشه دیگه فرقی نمی کنه

sokote_bi_payan
جمعه 08 آذر 1387, 07:16 قبل از ظهر
کتاب پردازش تصویر گونزالز که بسیار عالیه.

این ترجمه چند فصلشه

http://rapidshare.com/files/155118774/pardazesh_tasvir_WWW.IRANMEET.COM_.rar

sokote_bi_payan
جمعه 08 آذر 1387, 07:25 قبل از ظهر
سلام به همه دوستان
آقا من درگیر یه پروژه تشخیص ارقام هستم ولی راستشو بخاین خیلی وقته که گیجشم
کسی میتونه در این رابطه کمکم کنه
پروژه اینه که باید یه عکس که شامل یه رقم از 1 تا 9 به فارسی هس رو بگیره و تشخیص بده چنده
ممنون


اینم استخراج اسکلت بندی اشیاء که از سایت حامد حبیبی . کام برداشتم


استخراج اسکلت بندی یک الگو به معنی باریک کردن الگو به نحوی است که شکل کلی الگو از بین نرود. از اینرو اسکلت یک الگو همانند خود الگو باید قابل تشخیص بوده و توسط آن بتوان شکل کلی الگو را حدس زد. بنابراین اسکلت به دست آمده برای یک الگو باید دارای خصوصیات زیر باشد :

· به اندازه کافی باریک باشد

· متصل باشد : یعنی فرآیند اسکلت بندی نباید باعث تکه تکه شدن اسکلت الگو شود

زمانی که این دو شرط برقرار شد، الگوریتم اسکلت بندی متوقف می شود. شکل زیر تصویری را به همراه اسکلت آن نشان می دهد :

http://www.hamedhabibi.com/Images/toturials/skeleton.jpg

در حالت کلی الگوریتم های استخراج اسکلت الگو بر پایه دو استراتژی مختلف هستند. در استراتزی اول از همه پیکسل های تصویر و در استراتژی دوم از پیکسل های کانتور تصویر برای این منظور استفاده می شود. روشی که ما در اینجا بررسی خواهیم کرد روش مبتنی بر پیکسل های تصویر بوده و به نام Hilditch معروف است که بر روی تصاویر دو سطحی ( باینری ) اعمال می کنیم.



تعاریف اولیه :

همسایه های هشتگانه پیسکل P1 را در نظر بگیرید :
http://www.hamedhabibi.com/Images/toturials/8neigh.JPG
هدف ما این است که در مورد حذف پیکسل P1 یا ماندن آن به عنوان یک پیکسل بر روی اسکلت تصمیم بگیریم. برای این منظور همسایه های هشتگانه آن را در جهت عقربه های ساعت مرتب کرده و دو تابع زیر را برای آن ها تعریف می کنیم :

· تابع B(P1) : تعداد همسایه های غیرصفر P1 را برمی گرداند.

· تابع A(P1) : تعداد الگوهای 1،0 در لیست P2,P3,P4,P5,P6,P7,P8,P9,P2 را بر می گرداند. الگوی 0,1 بدین معنی است که با در نظر گرفتن دو همسایه پشت سرهم مثل P6 و P7، مقدار P6 صفر بوده و P7 مقدار 1 داشته باشد. به عنوان مثال :
http://www.hamedhabibi.com/Images/toturials/skeletonfunctions.JPG
الگوریتم اسکلت بندی :

الگوریتم Hilditch از یک پنجره 3*3 استفاده کرده و تازمانی تغییری در تصویر به وجود آید، به طور مداوم همه پیکسل های تصویر را بررسی می کند و به ازای هر پیکسل در صورتی که چهار شرط زیر برقرار شود، پیکسل جاری از تصویر حذف می گردد :

http://www.hamedhabibi.com/Images/toturials/skelformul.JPG

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

1. تازمانی که تغییر دیگری حاصل نشود :

a. کل تصویر پیمایش شده و پیکسل هایی که هر چهار شرط فوق برای آنها صادق باشد کاندیدای حذف شدن می شوند.

b. پیکسل های کاندیدای حذف شدن ، از تصویر حذف می شوند



شرط اول :

شرط بزرگتر یا مساوی بودن B(P1) از 2 مطمئن می سازد که هیچک از نقاط انتهایی و نقاط منحصر تصویر حذف نخواهند شد. هر نقطه ای که تنها یک پیکسل شی ای در همسایگی هشتگانه خود داشته باشد را نقطه انتهایی یا نقطه T گویند. شرط کوچکتر یا مساوی بودن B(P1) از 6 نیز تضمین می کند که P1 یک پیکسل محیطی است :
http://www.hamedhabibi.com/Images/toturials/skeletonfunction1.JPG

همانطور که از شکل پیداست ، اگر B(P1)= 1 باشد در اینصورت P1 یک پیکسل از نوع T است و نباید حذف شود. همچنین اگر B(P1)= 0 باشد ، P1 یک پیکسل تک نقطه بر روی تصویر است و نباید حذف شود. توجه کنید که حذف پیکسل های تک نقطه ای برعهده الگوریتم های حذف نویز می باشد. همچنین اگر B(P1)= 7 باشد ، شکی نیست که P1 بر روی محیط الگو می باشد، بنابراین نباید حذف شود.



شرط A(P1) = 1 :

شرط متصل بودن اسکلت را بررسی می کند. به عنوان مثال در همه تصاویر زیر A(P1)> 1 است. در هر کدام از تصاویر زیر بخواهیم P1 را حذف کنید، اسکلت استخراج شده غیرمتصل خواهد شد:

http://www.hamedhabibi.com/Images/toturials/skeletonfunction2.JPG
شرط P2.P4.P8 = 0 یا A(P2) <> 1:

این شرط تضمین می کند که خطوط عمودی با پهنای 2 پیکسل به طور کامل توسط الگوریتم ساییده نخواهند شد :

http://www.hamedhabibi.com/Images/toturials/skeletonfunction3.JPG
شرط P2.P4.P6=0 یا A(P4) <> 1:

این شرط تضمین می کند که خطوط افقی با پهنای 2 پیکسل به طور کامل توسط الگوریتم ساییده نمی شود
http://www.hamedhabibi.com/Images/toturials/skeletonfunction4.JPG

نتیجه گیری

الگوریتم Hilditch الگوریتم کاملی نمی باشد چرا که بر روی برخی از انواع الگوها به درستی عمل نمی کند. به عنوان مثال الگوریتم Hilditch باعث ساییده شدن کامل الگوهای زیر می شود :
http://www.hamedhabibi.com/Images/toturials/skeletonPattern.JPG

در زیر اسکلت استخراج شده برای تعدادی تصویر با استفاده از الگوریتم Hilditch نشان داده شده است :

http://www.hamedhabibi.com/Images/toturials/skeletondigit4.JPG
http://www.hamedhabibi.com/Images/toturials/skeletondigit3.JPG
http://www.hamedhabibi.com/Images/toturials/skeletonFinger.JPG

sokote_bi_payan
دوشنبه 11 آذر 1387, 22:40 بعد از ظهر
مثه اینکه هیچکی نمی خواد تو بحث شرکت کنه

razavi_university
سه شنبه 12 آذر 1387, 01:55 قبل از ظهر
دوست عزیز ممنون از بحثی رو که شروع کردید و ادامه می دهید، هر جا صحبت از پردازش تصویر میشه همه صحبت از Matlab و کتابخانه های آمادش و ... می کنند و به ندرت مقاله ای در رابطه با پردازش تصویر در زبانهایی مثل #C وجود داره.
بنده شخصا به مبحث پردازش تصویر علاقه دارم ولی متاسفانه سوادم در این زمینه اینقدر نیست که بتونم اظهار نطری بکنم، ترجیح میدم کنار بشینم و یاد بگیرم:چشمک:
احتمالا سایر دوستانی هم که در بحث شرکت نمی کنند حالتی مشابه من دارند

sokote_bi_payan
چهارشنبه 13 آذر 1387, 00:36 قبل از ظهر
منم خودم هیچی از پردازش تصویر البته نمی دونم.

ولی دوست دارم این بحث و.

در ضمن همونطور که می دونید یکی از کتاب های معروفی که تو پردازش تصویر هست کتاب گونزالز هست که ترجمه چند فصلش و آقای قمی (بابا دمت گرم که همه جا یه دستی داره) زحمت کشیدن و منم لینکش و گذاشتم واسه دوستان علاقه مند
امیدوارم استفاده کنند

sokote_bi_payan
چهارشنبه 13 آذر 1387, 00:47 قبل از ظهر
می خواستم ریفرنس Open Cv رو قرار بدم همچنین خود لایبریشو اما سایت اجازه نمی ده یعنی حجم فایل هام زیاد تره باید برم یه سایت دیگه آپلود کنم :عصبانی++:

sokote_bi_payan
پنجشنبه 14 آذر 1387, 03:06 قبل از ظهر
Grayscale کردن تصویر


تصویر RGB و Grayscale :

یک تصویر RGB متشکل از سه تصویر است که هریک از آنها مقادیر Red ( قرمز ) ، Green ( سبز ) ، Blue ( آبی ) تصویر رنگی را نگه می دارند. تصویر حاصل نیز از ترکیب مقادیر درآیه های متناظر در سه ماتریس بوجود می آید.

F( x1,y1 ) = R( x1,y1 ) + G( x1,y1 ) + B( x1,y1 )


برای Grayscale کردن تصویر از فرمول زیر استفاده می کنیم :


S( x1,y1 ) = (R( x1,y1 ) + G( x1,y1 ) + B( x1,y1 ) ) / 3


شبه کد زیر نحوه الگوریتم Grayscale کردن تصویر RGB با سایز M * N را نشان می دهد :



Procedure Grayscale( output , input As Bitmap )
Begin

For I = 1 to M Do

For J = 1 To N Do

Temp = ( input.R( I,J ) + input.G( I,J ) + input.B( I,J ) ) / 3

Output.R ( I,J ) = Temp

Output.G ( I,J ) = Temp

Output.B ( I,J ) = Temp

End For

End For

End


شکل زیر یک تصویر RGB را نشان می دهد :

شکل زیر نیز تصویر حاصل از اجرای الگوریتم Grayscale را نشان می دهد :


از آنجا که مقادیر ماتریس های R , G , B پس از Grayscale کردن تصویر باهم برابر هستند ، بنابراین می توان تنها از یک ماتریس برای نشان دادن مقادیر استفاده کرد. در الگوریتم های بعدی که برای پردازش تصویر ارائه خواهند شد از تصاویر Grayscale استفاده خواهیم کرد . بنابراین عملیات نیز بر روی تنها یک ماتریس انجام خواهد پذیرفت.

برگرفته شده از سایت www.HamedHabibi.com

sokote_bi_payan
پنجشنبه 14 آذر 1387, 03:09 قبل از ظهر
حالا می خوام یه خورده تو زمینه مکان یابی و نقشه برداری صحبت کنم ( البته من که خودم اینکاره نیستم اما مقالاتی که خوندم و پیدا کردم و ان شاءالله می خوام بذارم)

sokote_bi_payan
جمعه 15 آذر 1387, 20:12 بعد از ظهر
دو الگوریتم معروف تو این زمینه وجود داره(مکان یابی و نقشه برداری) یکی الگوریتم کالمن و دیگری پارتیکل که هر کدوم به یه صورتی شروع به این عملیات می کنند( البته الگوریتم های دیگه ای هم تو این زمینه وجود داره)

این مقاله طریقه نقشه برداری به صورت همزمان توسط چند ربات را توضیح می ده.

(جا داره اینجا یه انتقاد از سایت برنامه نویس بکنم اونم اینکه بخوایم فایلی رو قرار بدیم خیلی محدودیت داره. چه از نظر حجم چه از نظر نوع فایل)

به همین دلیل مجبور شدم برم یه سایت دیگه آپلود کنم.

اینم لینکش :

http://www.2shared.com/file/4400900/4be762ad/i607.html

sokote_bi_payan
یکشنبه 17 آذر 1387, 21:14 بعد از ظهر
اینم نحوه پیاده سازی الگوریتم Particle Filtering

farzadho
دوشنبه 18 آذر 1387, 21:17 بعد از ظهر
سلام
بحث بسیار جالبی هست
دوره دبیرستان مسابقات روباتیک سوالش همین بود من خیلی کار کردم ولی بازم برنامم مشکل داشت
برنامه باید اشکال هندسی مربع مثلث دایره مستطیل رو تشخیص میداد البته تعداد هم مهم بود...
تشخیص اعداد هم بود...
در کل پردازش تصویر یه بحث بسیار سنگینیه ...
کتاب گنزالس بهترین منبع...

sokote_bi_payan
شنبه 23 آذر 1387, 13:01 بعد از ظهر
در کل پردازش تصویر یه بحث بسیار سنگینیه ...
کتاب گنزالس بهترین منبع...

بله لينك كتاب و تو همين تاپيك گذاشتم دوستان مي تونند استفاده كنند

sokote_bi_payan
جمعه 29 آذر 1387, 21:06 بعد از ظهر
نخیر مثه اینکه تا آخر باید خودم این بحث و ادامه بدم. این که کار نشد

Amir Oveisi
جمعه 29 آذر 1387, 21:14 بعد از ظهر
ممنون به خاطر مطالب مفیدی که گذاشتین
ان شاا... بزودی منم یه سری مطالب در این موارد میزارم

موفق باشید
jooje

Amir Oveisi
جمعه 29 آذر 1387, 23:43 بعد از ظهر
در مورد OpenCV :
http://www.codeproject.com/KB/cs/Intel_OpenCV.aspx#install

sokote_bi_payan
یکشنبه 01 دی 1387, 12:40 بعد از ظهر
سلام آقای برمودا بی صبرانه منتظر پست های دیگه تونم .
دسستون درد نکنه

موفق باشید
یا علی

Amir Oveisi
یکشنبه 01 دی 1387, 12:57 بعد از ظهر
برای استفاده از OpenVC تحت NET. به لینک پست قبلیم مراجعه کنید. چند تا فایل dll هست که باید دانلود کنید و تو فولدر خروجی برنامتون کپی کنید و به reference های برنامتون اضافه کنید.

یه نمونه کد تقریبا کامل برای شناسایی مستطیل و مربع تو عکس و کشیدن خط دور اونا.
برای همه حالات دوران یافته و ... جواب میده.

لینک دانلود سورس برنامه (http://www.4shared.com/file/76947750/f8f9327/RectangleDetection.html)

توضیحات مربوط به کد ها رو هم اگر وقت کردم میذارم اینجا و الگوریتمشو

در آینده در مورد Face Detection هم بحث میکنیم ان شاا...

در ضمن به کتاب کامل در مرود آموزش OpenVC هم دستم هست که pdf هستش و بزودی upload میکنم و لینکش رو اینجا میذارم.

موفق باشید
jooje

sokote_bi_payan
یکشنبه 01 دی 1387, 13:33 بعد از ظهر
لینکت انگار خرابه

sokote_bi_payan
یکشنبه 01 دی 1387, 13:54 بعد از ظهر
اینم رفرنس Open Cv

http://www.4shared.com/file/76950767/1a71444e/OpenCVreferencemanual.html
http://www.4shared.com/file/76950767/1a71444e/OpenCVreferencemanual.html

Amir Oveisi
یکشنبه 01 دی 1387, 16:08 بعد از ظهر
لینک درسته من الان دوباره تست کردم

afrashteh1
یکشنبه 01 دی 1387, 23:20 بعد از ظهر
دوستان من يه برنامه نوشتم كه تصوير را سياه و سفيد ميكنه (نگاتيو) ولي حالا مي خوام يه طيف رنگي را دريافت كنه و فقط اون طيف را تغيير رنگ بده (مثلا سياه و سفيد)

mjelecom
دوشنبه 02 دی 1387, 02:49 قبل از ظهر
دوستان عزیز سلام:لبخند:
اگر واقعا دنبال پردازش تصویر هستید اولا باید نرم افزار Matlab رو خوب بدونید.
حالا میگم چرا!:متفکر:
1- این نرم افزار رو اختصاصا برای محاسبات ریاضی ساختن.
2- قبلا یه سری پروفسور الگوریتماشو بهینه کردن. (در مورد پروفسورهاش به Helpاش برید.)
3- تمامی روتینهای مربوط از قبل وجود داره.
4- ..................
پس فقط کافیه که شما الگوریتم نویس باشید. همین. وقتی الگوریتمت تو متلب نوشته شد
و ازش جواب گرفتی، حالا متلب این اختیار رو به شما میده که یا واسط گرافیکیتون رو تو متلب بسازید (که خوب خیلی ضعیفه) یا اینکه الگوریتمتون رو بکنید یه DLL و هرجا که خواستید ببرید.
به نظرتون این روش ساده تر از اختراع چرخ نیست؟
-----------------------------------------------------------------------------------------
راستی در مورد تشخیص یک عدد، توصیه من اینه که از شبکه عصبی بهره ببرید. البته روشهای مقایسه ای دیگه ای هم وجود داره که جواب میدن. اما تو محیطای نویزی اصلا
کارایی ندارن.

البته شرمنده که پا برهنه پریدم وسط صحبتهاتون.:چشمک:

afrashteh1
دوشنبه 02 دی 1387, 08:54 قبل از ظهر
دوستان خواهش مي كنم راهنمايي كنيد

Amir Oveisi
دوشنبه 02 دی 1387, 10:21 قبل از ظهر
دوستان عزیز سلام
اگر واقعا دنبال پردازش تصویر هستید اولا باید نرم افزار Matlab رو خوب بدونید.
حالا میگم چرا!
1- این نرم افزار رو اختصاصا برای محاسبات ریاضی ساختن.
2- قبلا یه سری پروفسور الگوریتماشو بهینه کردن. (در مورد پروفسورهاش به Helpاش برید.)
3- تمامی روتینهای مربوط از قبل وجود داره.
4- ..................
پس فقط کافیه که شما الگوریتم نویس باشید. همین. وقتی الگوریتمت تو متلب نوشته شد
و ازش جواب گرفتی، حالا متلب این اختیار رو به شما میده که یا واسط گرافیکیتون رو تو متلب بسازید (که خوب خیلی ضعیفه) یا اینکه الگوریتمتون رو بکنید یه DLL و هرجا که خواستید ببرید.
به نظرتون این روش ساده تر از اختراع چرخ نیست؟

1- خیلی ها هدفشون از پردازش تصویر انجام یک پروژه آموزشی هست نه تجاری به همین دلیل برای اینکه بدونه چرخ چجوری راه میره و اینو قشنگ متوجه بشه میخواد خودش یه چرخ اختراع کنه هر چند که ممکنه چرخش مربعی در بیاد ولی مهم اینه که base قضیه رو خوب میفهمه و بعدا خیلی سریعتر پیشرفت میکنه

2- برای اوناییم که به هر دلیلی نمیخوان چرخ رو دوباره اختراع کنن خوب چرخای زیلدی قبلا اختراع شده که ما برای نمونه اینجا یه چرخ open source که برای NET. هم همه امکاناتش رو در اختیار گذاشته (به اسم OpenCV) معرفی کردیم و ان شاا... ادامش هم میدیم با لطف و یاری دوستان.

3- پس هر کسی نسبت به هدف و شرایطش میتونه هم چرخ اختراع کنه و هم چرخ سوار بشه و هر دو شونم خوبن و به هیچ کدوم نمیشه خرده گرفت.

4- ببخشید زیاد حرف زدم

موفق باشید
jooje

afrashteh1
سه شنبه 03 دی 1387, 12:57 بعد از ظهر
دوستان خواهش مي كنم اگه كسي در اين زمينه اطلاعي داره از ما دريغ نكنه .خيلي ضروريه

sokote_bi_payan
جمعه 06 دی 1387, 23:28 بعد از ظهر
afrashteh1 لطفا یه خورده بیشتر توضیح بدید. یعنی چی ؟

يه طيف رنگي را دريافت كنه و فقط اون طيف را تغيير رنگ بده
خوبه فقط کافیه یه شرط به حلقه ات اضافه شه همین

sokote_bi_payan
دوشنبه 16 دی 1387, 12:43 بعد از ظهر
دوستان کسی تو زمینه فیلتر کلمن کار نکرده ؟

اگه کار کرده لطفا یه توضیح و اگه مثال یا پروژه ای هم داره بذاره تا دیگران استفاده کنند

ممنون

Amir Oveisi
دوشنبه 16 دی 1387, 13:33 بعد از ظهر
http://www.vni.com/products/imsl/cSharp/v40/html/Example/Stat/KalmanFilterEx1.html

sokote_bi_payan
چهارشنبه 18 دی 1387, 00:05 قبل از ظهر
نحوه پیاده سازی particle تو محیط مطلب

esfahan
جمعه 21 فروردین 1388, 00:35 قبل از ظهر
سلام اسم من محمد
من تو matlab در زمینه پردازش تصویر خیلی کار کردم ولی متاسفانه بر خلاف سادگی مطلب سرعت پایینی داره
برا همین اومدم به سمت سی شارپ حالا کسی از دوستان میدونه چطور میشه مرکز چند تا دایره را تو سی شارپ پیدا کرد اگه راهنمایی کنید ممنون میشم
از تمام دوستانی که تو این قسمت کمک میکنند و مطلب میگذارند تشکر میکنم:تشویق:

SamIran
پنجشنبه 26 شهریور 1388, 22:34 بعد از ظهر
دوست عزیز!
اگر دنبال سرعت واقعی هستی باید از FrameWork دوری کنی! باید به سمت برنامه های Native بری که بهترین گزینه به نظر من OpenCV و C++ Native هست! اینم علتش :

seniamail
جمعه 27 شهریور 1388, 01:11 قبل از ظهر
این هم یه نمونه برنامه که تعداد پیکسلهای سیاه رو میشماره که کار خودم هست

sokote_bi_payan
چهارشنبه 05 آبان 1389, 11:12 قبل از ظهر
چند وقتیه که دارم رو یه بحث خیلی جالب کار می کنم.
به نظرتون چی جوریه به یه بچه می گیم این درخته بعد انواع مختلف درخت رو می بینه می فهمه که اون درخته؟
تو زمینه پردازش به نظرم انسان از کل به جز می رسه یعنی ابتدا کل اون درخت رو می بینه بعد شبیه سازی می کنه بعد تشخیص می ده که درخته؟
دوستان کسی در این مورد نظری نداره؟
واقعا عجب قدرتی داره خدااااااااااا

sokote_bi_payan
پنجشنبه 06 آبان 1389, 11:26 قبل از ظهر
به نظرتون میشه رو این پروژه کارکرد ؟
یعنی ما بیایم یک نرم افزاری طراحی کنیم که اولا قدرت یادگیری داشته باشه
ثانیا بتونه شبیه سازی انجام بده و یک جسم رو تشخیص بده ؟

مصطفی ساتکی
پنجشنبه 06 آبان 1389, 19:18 بعد از ظهر
چرا کار سختی نیست ولی محدودش بایستی مشخص باشه و پروژه open source نباشه من هستم

sokote_bi_payan
شنبه 08 آبان 1389, 08:48 قبل از ظهر
محدوده چی باید مشخص باشه ؟

amirsadeghi
شنبه 29 آبان 1389, 15:08 بعد از ظهر
دوستان من يه برنامه نوشتم كه تصوير را سياه و سفيد ميكنه (نگاتيو) ولي حالا مي خوام يه طيف رنگي را دريافت كنه و فقط اون طيف را تغيير رنگ بده (مثلا سياه و سفيد)

خب با چه روشی سیاه و سفید میکنی؟
پیکسل پیکسل میخونی و با فرمولش هر مولفه رو جمع و تقسیم میکنی؟
اگه اینجوریه که باید بگم قبل از اینکه مولفه ها رو جمع و تقسیم کنی کافیه تو یه شرط که میتونه if باشه یا case بررسی کنی که آیا هرکدوم از مولفه ها تو range طیف مورد نظرت هستن یا نه
اگه هر سه تا تو رنج بودن اون موقع مولفه ها رو جمع و تقسیم کن.
بهمین راحتی...

amirsadeghi
شنبه 29 آبان 1389, 16:44 بعد از ظهر
دو الگوریتم معروف تو این زمینه وجود داره(مکان یابی و نقشه برداری) یکی الگوریتم کالمن و دیگری پارتیکل که هر کدوم به یه صورتی شروع به این عملیات می کنند( البته الگوریتم های دیگه ای هم تو این زمینه وجود داره)

این مقاله طریقه نقشه برداری به صورت همزمان توسط چند ربات را توضیح می ده.

(جا داره اینجا یه انتقاد از سایت برنامه نویس بکنم اونم اینکه بخوایم فایلی رو قرار بدیم خیلی محدودیت داره. چه از نظر حجم چه از نظر نوع فایل)

به همین دلیل مجبور شدم برم یه سایت دیگه آپلود کنم.

اینم لینکش :

http://www.2shared.com/file/4400900/4be762ad/i607.html

دوست عزیز این لینک از بین رفته. امکانش هست مجددا اون رو آپلود کنی؟

sokote_bi_payan
یکشنبه 30 آبان 1389, 08:31 قبل از ظهر
شرمنده اون پست حداقل واسه یکی دو سال پیش بوده و دیگه ندارمش

amirsadeghi
یکشنبه 30 آبان 1389, 13:09 بعد از ظهر
انگاری کلا تاپیک مال خیلی وقت پیشه درسته؟
یا قرار هست فعال بشه؟

r.gh45
سه شنبه 02 آذر 1389, 00:54 قبل از ظهر
سلام
من می خوام شروع به یادگیری پردازش تصویر کنم توی این تاپیک مطالب عالی و خوبی پیدا کردم
البته من خودم در ابتدای کارم و هیچی بلد نیستم اومیدوارم با کمک هم به جاهای خوبی برسیم

r.gh45
سه شنبه 02 آذر 1389, 13:39 بعد از ظهر
سلام
من برای اول کار یک برنامه برای Grayscale یک تصویر نوشتم البته کدش پیچیده نیست ولی برای شروع کار لازمه
کدشم از روی تاپیکایی که قبلا توی همین سایت راهنمای کرده بودن برداشتم:خجالت:
http://rapidshare.com/files/432603288/WindowsApplicatio.rar