Parsi Coders

نسخه‌ی کامل: واضح کردن تصویر زوم شده
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
نرم افزاری هست که بشه باهاش این کار رو انجام داد ؟؟
اره

photo zoom
چطوری این کارو میکنه ؟ (یه جا خوندم که پیکسل های خالی رو حدس میزنه !؟)
سورسی چیزی در این زمینه هست ؟!
PhotoZoom Pro نرم افزاری است کامل و مورد نیاز برای Digital photography، Large printing ، DTP ، Web Design و Online publishing .همچنین نرم افزاری است مورد استفاده برای پردازش بر روی industrial image همچون Confusedpace technology ، امنیتی ، پزشکی و کاربرد های قانونی .بسیاری از حرفه ای ها و حتی غیر حرفه ای ها با مشکل تغییر انداره ی تصاویر خود مواجه هستند.PhotoZoom نرم افزاری است بر پایه ی S-Spline XL که به شما قابلیت بزرگ کردن تصاویر خود با کم ترین کاهش کیفیت را خواهد داد. برای مثال انتظار بزرگ نمایی تصاویر ۲×۲ به ۱۰۲۴×۷۶۸ را بدون کاهش کیفیت نداشته باشید استفاده ی این نرم افزار برای بزرگ نمایی حدود ۳ تا ۴ برابر برای استفاده های شخصی و ۶ تا ۸ برابر برای استفاده های خاص می باشد.



بازسازی پیکسله



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

thania

روش واسه interpolation پیکسل و پردازش بعد از اون هست.بعضی هاش به تصویر وابسته هست و کاربرد خاص داره(البته اگه منظورتون همین باشه!)
اینم سورس

لذت ببر

کد:
[/cod'** Interpolation Antialisa Bicubic Resizing Algorithm **'
'** Code was writen by Cory Watt(mouak@crosswinds.net)
'** Use as you wish, just never sell, unless compiled in
'** a excuting application/program!
'** Alot of thanx goes to my friend Kim Doo-hyun, Thanx **'
'public by parsicoders.com
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Private Sub sDrawImage(SrcHDC As Long, OffsetX As Integer, OffsetY As Integer, srcW As Integer, srcH As Integer, dstW1 As Integer, dstH1 As Integer, dOffsetX As Integer, dOffsetY As Integer, DstHDC As Long, DstEdge As Byte)
Dim dx As Integer, dy As Integer, iX As Integer, iY As Integer, x As Integer, y As Integer
Dim i11 As Long, i12 As Long, i21 As Long, i22 As Long
Dim V1 As Integer, V2 As Integer, V3 As Integer, S1 As Integer, S2 As Integer, S3 As Integer, N1 As Integer, N2 As Integer, N3 As Integer, H1 As Integer, H2 As Integer, H3 As Integer, U1 As Integer, U2 As Integer, U3 As Integer, P1 As Integer, P2 As Integer, P3 As Integer
Dim Color11qRed As Integer, Color11qGreen As Integer, Color11qBlue As Integer, _
Color21qRed As Integer, Color21qGreen As Integer, Color21qBlue As Integer, _
Color22qRed As Integer, Color22qGreen As Integer, Color22qBlue As Integer, _
Color12qRed As Integer, Color12qGreen As Integer, Color12qBlue As Integer
Dim dstW As Integer, dstH As Integer
Dim iRX As Integer, iOrX As Integer, iRY As Integer, iOrY As Integer, dw As Integer, dh As Integer
If DstEdge = 1 Then
dstW = dstW1 + (dstW1 / srcW)
dstH = dstH1 + (dstH1 / srcH)
Else
dstW = dstW1
dstH = dstH1
End If
For dy = 0 To srcH - 1
iOrY = iRY
iRY = ((dstH) / srcH) * (dy + 1)
For dx = 0 To srcW - 1
iOrX = iRX
iRX = ((dstW) / srcW) * (dx + 1)

'(Getting 4 Colors. Of X, upper-left,
'upper-right, lower-left, lower-right.)
i11 = GetPixel(SrcHDC, dx + OffsetX, dy + OffsetY)
i12 = GetPixel(SrcHDC, dx + 1 + OffsetX, dy + OffsetY)
i21 = GetPixel(SrcHDC, dx + OffsetX, dy + 1 + OffsetY)
i22 = GetPixel(SrcHDC, dx + 1 + OffsetX, dy + 1 + OffsetY)


iX = iOrX
iY = iOrY
dw = iRX - iOrX
dh = iRY - iOrY

'(Get the Three Color values, Red, Green,
'and blue.)

'(upper-left)
Color11qRed = i11 Mod 256
Color11qGreen = (i11 \ 256) Mod 256
Color11qBlue = (i11 \ 65536) Mod 256

'(lower-left)
Color12qRed = i12 Mod 256
Color12qGreen = (i12 \ 256) Mod 256
Color12qBlue = (i12 \ 65536) Mod 256

'(upper-right)
Color21qRed = i21 Mod 256
Color21qGreen = (i21 \ 256) Mod 256
Color21qBlue = (i21 \ 65536) Mod 256

'(lower-right)
Color22qRed = i22 Mod 256
Color22qGreen = (i22 \ 256) Mod 256
Color22qBlue = (i22 \ 65536) Mod 256

'(Red)
N1 = Color21qRed - Color11qRed
H1 = Color11qRed


'(Green)
N2 = Color21qGreen - Color11qGreen
H2 = Color11qGreen

'(Blue)
N3 = Color21qBlue - Color11qBlue
H3 = Color11qBlue

'(Cubic!)
'(Red)
U1 = Color22qRed - Color12qRed
P1 = Color12qRed

'(Green)
U2 = Color22qGreen - Color12qGreen
P2 = Color12qGreen

'(Blue)
U3 = Color22qBlue - Color12qBlue
P3 = Color12qBlue

For y = 0 To dh - 1
'(Now begins the Interpolation)
Color11qRed = H1 + ((N1) / dh) * y
Color11qGreen = H2 + ((N2) / dh) * y
Color11qBlue = H3 + ((N3) / dh) * y

Color12qRed = P1 + ((U1) / dh) * y
Color12qGreen = P2 + ((U2) / dh) * y
Color12qBlue = P3 + ((U3) / dh) * y


'(Red)
V1 = Color12qRed - Color11qRed
S1 = Color11qRed

'(Green)
V2 = Color12qGreen - Color11qGreen
S2 = Color11qGreen

'(Blue)
V3 = Color12qBlue - Color11qBlue
S3 = Color11qBlue


For x = 0 To dw - 1
Color11qRed = S1 + ((V1) / dw) * x
Color11qGreen = S2 + ((V2) / dw) * x
Color11qBlue = S3 + ((V3) / dw) * x

'(Set a Pixel, may need some changing,
If DstEdge = 1 Then
If x + iX < dstW1 And y + iY < dstH1 Then
SetPixel DstHDC, x + iX + dOffsetX, y + iY + dOffsetY, RGB(Color11qRed, Color11qGreen, Color11qBlue)
End If
Else
SetPixel DstHDC, x + iX + dOffsetX, y + iY + dOffsetY, RGB(Color11qRed, Color11qGreen, Color11qBlue)
End If
Next x
Next y
If dx = srcW - 1 Then iRX = 0
Next dx


'(not need)
Label1.Caption = dy
DoEvents

If dy = srcH - 1 Then iRY = 0
Next dy
End Sub

Private Sub cmdDraw_Click()
On Error Resume Next
If txtWidth < 32 Or txtHeight < 32 Then
MsgBox "Enlarges an Image only (at the moment!)", vbExclamation, "Enlarging!"
Else
sDrawImage pctImage.hdc, 0, 0, 32, 32, txtWidth, txtHeight, 0, 0, Me.hdc, chkEdge.Value
End If
End Sub



:whistling:

thania

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

در واقع بهش میگن

bicubic interpolation



پلاگین زیر رو فتوشاپ نصب میشه

http://persiangfx.com/fa/photoshop/plugi...w-up/#more



کارش عالیه یه نگاه بهش کن



اینم مطالعه کن :

اشارتی در باب تغییر اندازه تصویر

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

حال سوال این است که بهترین روش برای افزایش اندازه فایل تصویر چیست؟
حتما می‌دانید که برای افزایش اندازه تصویر در برنامه فتوشاپ از image > image size می‌توان اقدام به این کار کرد. عموما در مورد عکسها بایستی از interplolation نوع Bicubic استفاده نمود. در فتوشاپ CS گزینه‌های دیگری با نامهای Bicubic smoother و Bicubic sharper نیز وجود دارد. این دو گزینه جدید به مراتب دارای عملکردی بهتر از الگوریتم Bicubic قدیمی بوده و استفاده از آنها توصیه می‌شود. در مورد تصاویر دیجیتال در اکثر اوقات گزینه Bicubic smoother نتیجه بهتری دارد مگر آنکه بخواهید لبه ها در عکس شارپتر باشد.
نکته مهم در مورد انجام فرآیند interpolation این است که این عمل به صورت تدریجی انجام شود. مثلا برای بزرگنمایی 500% ، بهتر است در چند مرحله انجام شود که حتما نتیجه بهتری خواهد داشت.

ابزارهای دیگر؟
Fred Miranda stair interpolation ابزار معروفی است برای افزایش اندازه تصویر که از الگوریتمهای Bicubic‌ استفاده می‌کند اما این کار را به طور خودکار در چند مرحله انجام می‌دهد و در صورت تمایل کاربر در هر مرحله نیز فرآیند Unsharp masking را اعمال می‌نماید. کارآیی آن نسبت به انجام Bicubic interpolation فتوشاپ و نیز حتی Smoother bicubic تک مرحله ای بهتر است. اما اگر بتوانید با روش Bicubic smoother و در چندین مرحله (و در صورت نیاز انجام Unsharp mask ) عکس را بزرگ نمایید، شاید تفاوت چندانی با این ابزار نداشته باشد اما مهمترین مزیت این ابزار سرعت انجام کار و راحتی استفاده از آن است.
شرکت Extensis‌ نیز ابزاری بنام SmartScale دارد. این ابزار نیز بسیار خوب عمل می‌کند بخصوص در مواردی که بخواهید افزایش زیادی در اندازه تصویر ( تا حد 1600% ) بدهید این ابزار بایستی انتخاب اول شما باشد.

الگوریتمهای دیگر؟
الگوریتمهای دیگری نیز برای بزرگ کردن اندازه تصویر وجود دارد مانند lanczoc که در ابزار Qimage بکار رفته است و نیز الگوریتم S- spline . الگوریتم lanczoc نیز عملکرد عالی دارد که گاه در مورد برخی تصاویر هیچ ابزار دیگری به پای آن نمی‌رسد. اما مهمترین عیبش کندی زیاد فرآیند آن است. ایندو الگوریتم را می‌توانید در ابزار رایگان Irfanview پیدا کنید و آزمایش نمایید.

و RAW ...
در مورد فایلهای RAW همانگونه که قبلا گفته شد، بهترین روش، استفاده از خود مبدل Adobe camera RAW است که عملکردش از Bicubic smoother‌ نیز بهتر است.

در خاتمه...
اگر بخواهیم از این بحث یک جمع بندی ارائه نماییم :
1- برای کسانی که فتوشاپ دارند (بخصوص نسخه CS)، بهترین روش، استفاده از Bicubic smoother است. اگر بخواهید کیفیت کار را بالاتر ببرید حتما فرآیند را در چند مرحله و بتدریج انجام دهید.
2- استفاده از ابزار Fred Miranda stair interpolation ، بهترین انتخاب برای کسانی است که وقت و حوصله انجام فرآیند دستی و چند مرحله‌ای را در فتوشاپ ندارند.
3- در مورد تهیه اندازه های خیلی بزرگ بهترین انتخاب استفاده از ابزار Extensis SmartScale است.
4- در مورد فایلهای RAW ، بهترین روش، استفاده از امکانات مبدل RAW می‌باشد.
5- اگر چند ابزار مختلف را در اختیار دارید، ‌بهتر است در مورد تصاویری که خیلی برایتان مهم است، چند روش را امتحان نمایید. چرا که بسته به نوع تصویر، ابزارهای مختلف عملکردهای متفاوتی دارند.
ماخذ
http://digitalcamera.akkasee.com/
(10-16-2012، 03:55 PM)thania نوشته: [ -> ]میدونید از چه الگوریتمی استفاده کرده؟


Interpolation Antialisa Bicubic Resizing Algorithm
صفحات: 1 2