ورود

View Full Version : کار با عکس



vahidmo
دوشنبه 30 مهر 1386, 23:10 عصر
چگونه عکس رنگی رو سیا سفیدش کنیم هر چه جستجو کردم پیدا نکردم ممنون
با چه کدی.
:عصبانی++::عصبانی++::گیج::گیج:

sama01
سه شنبه 01 آبان 1386, 04:10 صبح
نمی‌دونم چه میزان با کار با تصاوبر آشنایی دارید. ولی من با اطلاعات محدودی که دارم، این راه را پیشنهاد می‌کنم. رنگ‌های هر پیکسل رو به صورت RGB بگیر و میانگین آن‌ها را در پیکسل متناظر، برای RGB قرار بده. مثلا پیکسلی با رنگ‌های 50,100,150 به صورت 100,100,100 ذخیره بشه. در نهایت عکس جدید، ذخیره یا نمایش داده می‌شه.
برای این کار و به طور کلی کار با تصاویر باید از کلاس‌های system.drawing و system.drawing.imaging استفاده کنید.

در ضمن هنوان مناسب‌تری هم انتخاب کنید. با این کار احتمال بیشتری دارد که به جواب برسید.

من هم منتظر نظر اساتید هستم.

saeed_rezaei
سه شنبه 01 آبان 1386, 08:07 صبح
سلام
اگر جستجو رو با دقت بیشتری انجام می دادید به این لینک بر میخوردید.
http://barnamenevis.org/forum/showthread.php?t=81638

zarrin_306
سه شنبه 01 آبان 1386, 12:40 عصر
برای سیاه سفید کردن یک تصویر دو راه وجود داره.
اول اینکه رنگ هر پیکسل رو گفته، میانگین رنگ رو محاسبه و دوباره مقدار دهی کنید که روش وقت گیری هست.
روش دوم روش استفاده از colormatrix هست که سرعتش هم بالاست . برای این کار دوتا تابع می نویسم. هر دوتا تابع باید توی فرم باشن اما دقت کنید که شما فقط باید تابع اولی رو یعنی grayscale رو فراخوانی کنید و تصویر مورد نظر رو بهش بدید. خروجی تابع فوق هم تصویر سیاه سفید هستش.
تابع اول:

کد:

Public Function grayscale(ByVal img As Image) As Image


Dim cm As ColorMatrix = New ColorMatrix(New Single()() _
{New Single() {0.299, 0.299, 0.299, 0, 0}, _
New Single() {0.587, 0.587, 0.587, 0, 0}, _
New Single() {0.114, 0.114, 0.114, 0, 0}, _
New Single() {0, 0, 0, 1, 0}, _
New Single() {0, 0, 0, 0, 1}})

Dim cm2 As ColorMatrix = New ColorMatrix(New Single()() {New Single() {0.299, 0.299, 0.299, 0, 0}, New Single() {0.587, 0.587, 0.587, 0, 0}, New Single() {0.114, 0.114, 0.114, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0, 0, 0, 0, 1}})




Return draw_adjusted_image(img, cm)

End Function
تابع دوم:

کد:



Private Function draw_adjusted_image(ByVal img As Image, _
ByVal cm As ColorMatrix) As Image


Try
Dim bmp As New Bitmap(img) ' create a copy of the source image
Dim imgattr As New ImageAttributes()
Dim rc As New Rectangle(0, 0, img.Width, img.Height)
Dim g As Graphics = Graphics.FromImage(img)

' associate the ColorMatrix object with an ImageAttributes object
imgattr.SetColorMatrix(cm)

' draw the copy of the source image back over the original image,
'applying the ColorMatrix
g.DrawImage(bmp, rc, 0, 0, img.Width, img.Height, _
GraphicsUnit.Pixel, imgattr)

g.Dispose()

Return img

Catch
Return img
End Try

End Function

zarrin_306
سه شنبه 01 آبان 1386, 12:40 عصر
اینجا هم هستش
http://barnamenevis.org/forum/showthread.php?t=81638