(۲۸-مرداد-۱۳۸۹, ۰۲:۳۳:۲۷)salehjg نوشته است: [ -> ]در عمق رنگ(color depth) های متفاوت رنگ هایی هستند که در سایر عمق رنگ ها وجود ندارند.
مثلا در عمق رنگ 24 بیت رنگی را در نظر بگیریم که در عمق 16 بیت وجود نداره ، حالا وقتی عکس فرضی مون از 24 بیت به 16 بیت تغییر کنه اون رنگ چطور میشه؟
مفهموم را تونستم برسونم یا نه؟
عمق رنگ (Color Depth) تعداد بیت های هر پیکسل است. هر بیت می تواند 2 مقدار داشته باشد یا 0 یا 1. هر چقدر تعداد بیتهای یک پیکسل بیشتر باشد تعداد بیشتری رنگ می تواند نشان دهد. برای مثال تصویر 1 بیت دو رنگ می تواند نشان دهد، 4 بیت می تواند 16 رنگ نشان دهد، 8 بیت 256 رنگ، 16 بیت 16،777،216 رنگ نشان
می دهد و …
هر کانال در حالت true color می تواند 8 بیت اطلاعات ذخیره کند. برای مثال تصویر RGB دارای 3 کانال 8 بیتی و در مجموع 24 بیت اطلاعات می باشد. یک تصویر CMYK دارای 32 بیت اطلاعات است چون 4 کانال دارد.
کانال آلفا (Alpha Channel) یک کانال 8 بیتی است، از این کانال می توان برای نشان دادن حالت شفافیت در تصاویر استفاده کرد. این کانال می تواند مقادیری از 0 درصد که کاملا شفاف است تا 100 درصد که کاملا مات است داشته باشد (به معنای دیگر به خاطر اینکه 8 بیت اطلاعات دارد می تواند 256 مقدار داشته باشد، از صفر که کاملا شفاف است و دیده نمی شود تا 255 که کاملا مات و قابل دیدن است).
چون کانال آلفا دارای یک کانال جدا است، وقتی همراه یک تصویر RGB استفاده شود تبدیل به تصویر 32 بیتی می شود (24 بیت + 8 بیت)، همچنین آنرا به عنوان RGBA هم می شناسند (A برای Alpha).
تو مطالبم بود قبلنا منبع مطلب بادم نیست
ممنونم
مثلا عکسی رو می خوایم از 24 بیت (rgb) به 16 بیت تبدیل کنیم.
سوال من سر این تبدیل کردن هست.
دامنه ی تغییر در عکس 24 بیت برای هر کانال قرمز سبز آبی 0تا 255 هست.
اما دامنه ی تغییر فرمز و آبی و سبز در عکس 16 بیت (rgb555) برای هر کانال 0 تا 32 هست.
اگر بخواهیم یه عکس رو از 24 بیت به 16 بیت تبدیل کنیم باید تمام مقادیر رو به 8 تقسیم کنیم؟
روش این کار با net. چطوریه؟
من هنوز طرف تصویر رنگی نرفتم.
ولی بنظرم راهش همون تقسیم به 8 باشه...
(۲۸-مرداد-۱۳۸۹, ۰۳:۱۲:۰۲)salehjg نوشته است: [ -> ]ممنونم
مثلا عکسی رو می خوایم از 24 بیت (rgb) به 16 بیت تبدیل کنیم.
سوال من سر این تبدیل کردن هست.
دامنه ی تغییر در عکس 24 بیت برای هر کانال قرمز سبز آبی 0تا 255 هست.
اما دامنه ی تغییر فرمز و آبی و سبز در عکس 16 بیت (rgb555) برای هر کانال 0 تا 32 هست.
اگر بخواهیم یه عکس رو از 24 بیت به 16 بیت تبدیل کنیم باید تمام مقادیر رو به 8 تقسیم کنیم؟
روش این کار با net. چطوریه؟
دوست عزیز من قبلا کار کردم ...
متاسفانه 2 ساله کار نکردم یادم رفته اما
اگر میخوای کامل یاد بگیری اول لینک زیر را مطالعه کن
کد:
http://en.wikipedia.org/wiki/RGB_color_model
تو کلاس وی بی که بودم خیلی با این پیکسلها اذیتمون کردن
اینم بخون جالبه
--------------------------------------------------------------------------------
Convert Image
sorry to anyone who looked at my last thread it was all over the place
this i hope is more straight forward
I have a simple program to convert an image in a picture box into as grayscale image ,from what i have been told it is possible to then change that image in to a black and white image with certain levels of gray being converted to black and lower levels of gray being converted into white how would i do this
here is my code to change into gray scale
what would i need to add to this code
اینم یه نمونه کد
کد:
Private Sub cmdGray_Click()
Pic.ScaleMode = vbPixels
X = Pic.ScaleWidth
y = Pic.ScaleHeight
For i = 0 To y - 1
For j = 0 To X - 1
pixel = Pic.Point(j, i)
red = pixel Mod 256
green = ((pixel And &HFF00) / 256&) Mod 256&
blue = (pixel And &HFF0000) / 65536
gs = ((red * 30) + (green * 59) + (blue * 11)) / 100
Pic.PSet (j, i), RGB(gs, gs, gs)
Next
Next
Pic.ScaleMode = vbTwips
End Sub
و این لینک هم مطالعه کن به تمامی جوابهای سوالت میرسی
کد:
http://www.bigresource.com/VB-How-To-Convert-24-bit-To-8-bit-Bmp-Image--KODgFb8MGC.html
حال تایپ ندارم بعدا در موردش صحبت میکنیم
ممنون.
دوستان حالا بعد از تقسیم بر 8 و کار های دیگه می خوایم وقتی عکسمون رو save می کنیم بجای 24 بیت ، 16 بیت سیو بشه. چیکار کنم؟
(در حالت عادی 24 سیو میشه)
چرا میخوای رفیق حالا 16 بیت عکسشو ذخیره کنی؟
من که با کارهای گرافیکی تو C# آشنا نیستم. ولی از نظر فایل، باید تو هدر فایل، ویژگی هاش رو مشخص کنی. یعنی یه فایل باز میکنی هدرهاش رو مینویسی و بعد اطلاعات کامل تصویر ....
ساده ترین ساختار فایل تصویری که میتونی باهاش آشنایی پیدا کنی فرمت bmp هست.
http://en.wikipedia.org/wiki/BMP_file_format
البته دوباره تاکید میکنم اینا برای اینه که خودت بخوای مستقیم فایل رو درست کنی (نه با دستورات ذخیره تصویر C#)
برای bmp اول header نوشته میشه و بعد info header و بعد اطلاعات پیکسل ها
تو لینکی که گذاشتم بخش افست ها رو ببین. برا افست 1Ch نوشته :
کد:
the number of bits per pixel, which is the color depth of the image. Typical values are 1, 4, 8, 16, 24 and 32
یه سورس دوربین دارم که اطلاعات تصویر رو پیکس به پیکسل میگیره و در قالب یه فایل bmp ساده ذخیره میکنه. ولی یکم بهم ریخته... بگردی کدهای بهتری پیدا میکنی. خواستی بگو اینو بذارم... (البته اگه دستور C# رو پیدا کنی که احتیاجی به اینا نیست... ولی بنظرم بهتره سطح پایین کار کنی که وابسته نشی به C#. اگه بعدا مثلا بخوای رو ربات پردازش تصویر بذاری... ضمن اینکه کار کردن با توابع سطح بالا باعث میشه چیز مفیدی یاد نگیری...)
(پیشرفتت خیلی خوبه ها! آروم تر برو ما هم برسیم!)
سلام
دوستانی که در مورد پردازش تصویر با متلب آگاهی های دارند لطفا کمک کنند این برنامه رو بنویسند، که ما هم یاد بگیریم
مهندسين عزيز ميخوام يک رنگ رو توي يک تصوير تشخيص بدم و بعد توي يک صفحه ديکه مکان اون رنگ رو علامت بزارم
اگر نياز هست که بيشتر در موردش توضيح بدم امر بفرماييد
موفق و شاد باشيد
دوستان این هم عکس مورد نظر که قرار قسمت قرمزش تشخیص داده بشه
f
صفحه ای که قرار توش علامت زده بشه
(۰۴-شهریور-۱۳۸۹, ۱۱:۲۳:۰۰)morteza545 نوشته است: [ -> ]مهندسين عزيز ميخوام يک رنگ رو توي يک تصوير تشخيص بدم و بعد توي يک صفحه ديکه مکان اون رنگ رو علامت بزارم
حالا باید حتما متلب باشه؟برنامه نویسی نمیشه؟
چرخ را از اول اختراع نکن ، از ابزارهای آماده استفاده کن،قابلیتهاشو اضافه کن بر اساس نیازت.
مثلا یه زمانی یه ابزاری بود به اسم
IMageEN
http://shabgard.org/forums/showthread.php?t=8454
و خیلی چیزهای دیگه و حتی پروژه های اپن سورس
وقتت را روی مسائل اولیه که دیگران حل کردند به نظرم نزار...