PDA

View Full Version : تبدیل عکس رنگی به سیاه و سفید با Image Processing



hjran abdpor
شنبه 01 آبان 1389, 17:46 عصر
با سلام به دوستان .

میخواستم در مورد نحوه پردازش تصویر در سی شارپ کمکم کنید ؟

مثلا نحوه تبدیل عکس رنگی به سیاه و سفید یا بالعکس ؟

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

syntiberium
شنبه 01 آبان 1389, 19:07 عصر
در سایت codeproject.com عضو شوید و در قسمت C#‎‎ کلمه ی "Image Processing" را سرچ کنید . نمونه زیاده .
یه نمونش اینه : http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx

Salar Ashgi
شنبه 01 آبان 1389, 20:01 عصر
همانطور که گفته شد ، معروفترین کامپوننت در این زمینه ، کامپوننت های Aforge.NET هستند ./


مثلا نحوه تبدیل عکس رنگی به سیاه و سفید یا بالعکس ؟

برای چنین کاری نیاز به پردازش تصویر نیست ، میشه با متودهای کلاس System.Drawing و ... انجام داد ./

cardano7
یک شنبه 02 آبان 1389, 03:28 صبح
برای سیاه و سفید کردن عکس لازم هست که ضرایب تبدیل آبی و قرمز و سبز رو بدونید:

public Bitmap ConvertToGrayscale(Bitmap source)
{
Bitmap bm = new Bitmap(source.Width,source.Height);
for(int y=0;y<bm.Height;y++)
{
for(int x=0;x<bm.Width;x++)
{
Color c=source.GetPixel(x,y);
int luma = (int)(c.R*0.3 + c.G*0.59+ c.B*0.11);
bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));
}
}
return bm;
}


برای تشخیص لبه هم فرمولش اینجاست:
http://en.wikipedia.org/wiki/Edge_detection


کلا یک روش هست برای اینکه یک فیلتر خطی رو به شکل ماتریسی روی عکس اجرا کنی(هر چند دستی هم میشه این کار رو کرد. اما راه آماده ش که در لابرری های سی شارپ قرار داره بهتره). اگر دوستان دستورش رو می دونند، ممنون میشم اگه اینجا بگذارند.

مصطفی ساتکی
یک شنبه 02 آبان 1389, 08:42 صبح
مبحث تبدیل تصاویر garyscale به رنگی تحت عنوان Colorize که با شبکه های عصبی صورت می گیره.البته اگر رنگی کردن به این صورت باشه که تصویر هر رنگی که دلش خواست داشته باشه می تونید تصویر rgb رو به HSI برده و در اون فضا hue مربوط به تصویر رو تغییر بدید تو این سایت هم تا حدودی به اون پرداخته شد.
http://barnamenevis.org/forum/showthread.php?t=230670&highlight=%D8%B1%D9%86%DA%AF%DB%8C+%D8%B3%DB%8C%D8 %A7%D9%87+%D8%B3%D9%81%DB%8C%D8%AF+%D8%B4%D8%A8%DA %A9%D9%87+%D8%B9%D8%B5%D8%A8%DB%8C

hjran abdpor
یک شنبه 02 آبان 1389, 18:53 عصر
cardano7 (http://www.barnamenevis.org/forum/member.php?u=145181)
کاربر عزیز میشه در مورد این ضرایب توضیح دهید ؟

hjran abdpor
یک شنبه 02 آبان 1389, 19:04 عصر
دوستان عزیز میشه کمی در مورد این بحث بیشتر مطالب بذارید و خواهش میکنم از دوستان بزرگوار برنامه نویس در این بحث شرکت کنند ؟

میخوام الان یک کاری بکنم که یک عکس را به ارایه تبدیل کنم(دوبعدی) و داخل هر خانه از این ارایه یک مقدار رنگ قرار بگیرد و در بعد طبق این ارایه تعداد شی ها موجود ذر این عکس را دربیارم ؟ مثلا اگه 4 تا میوه (سیب و پرتقال و موز و انگور ) داخل این عکس بشند برنامه ما قابلیت پیدا کردن این پیکسل ها را داشته باشد ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/

کمک کنید ؟؟؟؟؟؟؟؟؟؟؟؟؟///

cardano7
دوشنبه 03 آبان 1389, 04:46 صبح
cardano7 (http://www.barnamenevis.org/forum/member.php?u=145181)
کاربر عزیز میشه در مورد این ضرایب توضیح دهید ؟

شما دارید یک پیکسل رنگی رو به سیاه و سفید تبدیل می کنید. ساده ترین روش ممکن که به نظر می رسه اینه که شما بیایید بین ضریب R, G, B اونا میانگین بگیرید:


Gray=(R+G+B)/3;

R=Gray;
G=Gray;
B=Gray;

یعنی اومدید به همه ی نور ها ضریب 1/3 دادید.
این روش درست کار می کنه، اما بهینه نیست.
برای اینکه عکس شما به معنای واقعی Gray Scale بشه، لازمه که ضرایب رو عوض کنید. مسلما ضریب نورهای قرمز و آبی و سبز، نمی تونه یکی باشه:



Gray=R*0.3 + G*0.59+ B*0.11;

R=Gray;
G=Gray;
B=Gray;

مصطفی ساتکی
دوشنبه 03 آبان 1389, 13:24 عصر
مثلا اگه 4 تا میوه (سیب و پرتقال و موز و انگور ) داخل این عکس بشند

اگر همچین کاری بخاید انجام بدید بایستی از Image processing و Pattern recognition استفاده کنید که آسونترینش شبکه رقابتی.
اصولاً در تشخیص این چنین object هایی بهترین روش شبکه HONN می باشد.
اگر color image processing انجام بدید color space تونو بایستی HSI انتخاب کنید.

hjran abdpor
پنج شنبه 06 آبان 1389, 09:20 صبح
با تشکر از دوستان به خطر جواب
حالا میخوام این چیزهایی که گفتید کاربر گرامی (
Delphi_CAT (http://www.barnamenevis.org/forum/member.php?u=37538)) از کجا شروع کنم برای کار .؟

2- قبل از از هر چیز من میخوام عکس را به باینری تبدیل کنم (منظورم از باینری اینه که عکس را را به سیاه سفید تبدیل کنم بدون از بین رفتن پیکس ها ) و در یک ارایه دو بعدی تبدیل کنم که به ازای هر سطر و ستون ان یک مقدار مشخص (0 یا 1 ) قرار بگیرد ؟


Pattern recognition یعنی چه؟

hjran abdpor
پنج شنبه 06 آبان 1389, 09:23 صبح
راستی مرجع انگلیس یا فارسی در مورد این بحث وجود دارد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟///

hjran abdpor
پنج شنبه 06 آبان 1389, 09:42 صبح
ممنونم میشم از دوستان که پیشتر به این بحث اهمیت دهند و ما مبتدی ها را راهنمایی کنید؟

مصطفی ساتکی
پنج شنبه 06 آبان 1389, 18:56 عصر
قبل از از هر چیز من میخوام عکس را به باینری تبدیل کنم (منظورم از باینری اینه که عکس را را به سیاه سفید تبدیل کنم بدون از بین رفتن پیکس ها ) و در یک ارایه دو بعدی تبدیل کنم که به ازای هر سطر و ستون ان یک مقدار مشخص (0 یا 1 ) قرار بگیرد ؟وقتی تصویر قالب رنگیش تغییر می کنه دیگه ماهیت قبلیش رو نداره وقتی که قالب رنگی یا pixelformat و فضایی رنگی رو تغییر میدیم براش دلیل داریم.
تصویر رو binarization می کنیم زمانیکه بخایم روی blob پردازش رو صورت بدیم.
در مورد pattern recognition و image processing می تونید از wiki اطلاعاتی کسب کنید البته در همین سایت کتاب های معرفی شده.
pattern recognition نیاز به پایه آمار و ریاضی قوی داره و تقریباً تو کل مباحث شما با فرمولاسیون سر وکار دارید و در اونجا انواع روش های machine learning رو یاد می گیرید

ua741_1
چهارشنبه 27 بهمن 1389, 15:39 عصر
سلام
برای تبدیل عکس نگی به سیاه و سفید چطوری میتونم GrayScale رو تغییر بدم
در حالتی که در بالا توضیح داده شده GrayScale برابر 256 است ولی من میخوام که مقدار اون به صورت سفارشی قابل تنظیم بشه (مثلا 16، 4 و ...)