ورود

View Full Version : سوال: کارتونی شکل کردن تصویر



m2011kh
شنبه 23 آذر 1392, 21:12 عصر
سلام و خسته نباشید.

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

Public Sub RGB_YCrCb(pic As PictureBox)

Dim i As Long
Dim j As Long

Dim pixel As Long
Dim RGBColor1 As Integer
Dim RGBColor2 As Integer
Dim RGBColor3 As Integer

Dim y As Single, Cb As Single, Cr As Single 'YCrCb»ö


Dim RGBResult1 As Integer
Dim RGBResult2 As Integer
Dim RGBResult3 As Integer

On Error Resume Next

pic.Cls

'=================== ¿µ¿ª ¼±Åà =============

ASWidth = PicInfo.bmWidth - 1
AsHeight = PicInfo.bmHeight - 1

'=================== ¿µ¿ª ¼±Åà =============

For i = 0 To ASWidth
For j = 0 To AsHeight

'¸Þ¸ð¸® DC¸¦ ÅëÇÏ¿© »ö»óÀ» ºÐ¸®

pixel = GetPixel(MemDc_1, i, j)

'======================================

RGBColor1 = pixel Mod &H100
RGBColor2 = (pixel \ &H100) Mod &H100
RGBColor3 = (pixel \ &H10000) Mod &H100


'YCrCb»ö ¿¬»ê¼öÇà
'Red 'Green 'Blue
y = 0.299 * RGBColor1 + 0.587 * RGBColor2 + 0.114 * RGBColor3
Cb = -0.1687 * RGBColor1 - 0.3313 * RGBColor2 + 0.5 * RGBColor3 + 128
Cr = 0.5 * RGBColor1 - 0.4187 * RGBColor2 - 0.0813 * RGBColor3 + 128

'==============================================
' Ŭ·¥ÇÎ(clamping) : °­Á¦·Î È­¼Ò°ª º¯°æ
If y > 255 Then y = 255
If Cb > 255 Then Cb = 255
If Cr > 255 Then Cr = 255

If y < 0 Then y = 0
If Cb < 0 Then Cb = 0
If Cr < 0 Then Cr = 0

'°¢°¢ÀÇ À§Ä¡¿¡ °á°ú¸¦ ³Ö´Â´Ù.
RGBResult1 = y 'Red
RGBResult2 = Cb 'Green
RGBResult3 = Cr 'Blue


ArrayImage1(i, j).rgbBlue = Cr
ArrayImage1(i, j).rgbGreen = Cb
ArrayImage1(i, j).rgbRed = y


'==============================================

SetPixelV pic.hdc, i, j, RGB(RGBResult1, RGBResult2, RGBResult3)

Next

Next

pic.Refresh

End Sub

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

سوالم اینجاست که این اعداد که کد رنگ پیکسل هارو در اون ضرب کرده چه معنایی میدن؟؟؟

یه راهنمایی کنین بقیه شو خودم میرم.

موفق و سربلند باشید.
MMD

MNDsoft
یک شنبه 24 آذر 1392, 19:36 عصر
یه سری به این جا بزن، گفته که این اعداد چیه:

اینجا (http://mathworks.ir/forum/9----/9882-------)