تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
المعالجةالصورية (الدرس الثالث)
#1
[COLOR="#800080"]بسم الله الرحمن الرحيم
((رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقه قولي))
صدق الله العلي العظيم
[/COLOR]


بسم الله الرحمن الرحيم

[COLOR="#800000"]السلام عليكم اخواني الاعزاء هذا الدرس سيكون حول تحويل الصورة الملونة الى صورة رمادية (Gray Scale image) حيث سنستخدم طريقتين في عمل ذلك.

الطريقة الاولى:

وذلك بإستخراج معدل الالوان الثلاثة واستبدالها بالالوان الاصلية للصورة, أي اسناد القيمة الناتجة الى الالوان الثلاثة للصورة, اليك الطريقة:[/COLOR]

PHP كود :
bmpdata bmp.LockBits(new Rectangle(00bmp.Widthbmp.Height), ImageLockMode.ReadWritePixelFormat.Format24bppRgb); 
            
IntPtr scan0 bmpdata.Scan0
            try 
            { 

                
unsafe 
                

                    
stride bmpdata.Stride
                    
remain stride bmp.Width 3
                    
byte= (byte*)(void*)scan0
                    for (
0bmp.Heighti++) 
                    { 
                        for (
0bmp.Widthj++) 
                        { 
                            
byte avg =(byteMath.Min((c[ji].c[ji].c[ji].B) / 3255); 
                            
p[2] = p[1] = p[0] = avg
                            
+= 3
                        } 
                        
+= remain
                    } 
                    
bmp.UnlockBits(bmpdata); 
                } 
                
pictureBox1.Image bmp
            } 
            catch (
Exception ex
            { 
                
MessageBox.Show(ex.Message); 
            } 

ا[COLOR="#800000"]لطريقة الثانية:

وذلك باستخدام المعادلة التالة:[/COLOR]


PHP كود :
.299 + ..587 .114 


اليك الكود:

PHP كود :
bmpdata bmp.LockBits(new Rectangle(00bmp.Widthbmp.Height), ImageLockMode.ReadWritePixelFormat.Format24bppRgb); 
            
IntPtr scan0 bmpdata.Scan0
            try 
            { 

                
unsafe 
                

                    
stride bmpdata.Stride
                    
remain stride bmp.Width 3
                    
byte= (byte*)(void*)scan0
                    for (
0bmp.Heighti++) 
                    { 
                        for (
0bmp.Widthj++) 
                        { 
                            
byte avg = (byte)Math.Min(c[j,i]..299 c[j,i]..587 c[j,i]..114255); 
                            
p[2] = p[1] = p[0] = avg
                            
+= 3
                        } 
                        
+= remain
                    } 
                    
bmp.UnlockBits(bmpdata); 
                } 
                
pictureBox1.Image bmp
            } 
            catch (
Exception ex
            { 
                
MessageBox.Show(ex.Message); 
            } 

[COLOR="#800000"]ملاحظة: الطريقة الثانية افضل من الطريقة الاولى.


والحمد لله انتهينا من هذا الدرس والى ان القاكم في درس جديد ان شاءالله انا بانتظار تعليقاتكم واسئلتكم.
[/COLOR]
[COLOR="#A52A2A"]--------------------------------------------------------
اخوكم سجاد محمد من العراق الجريح
[/COLOR]
الرد }}}
تم الشكر بواسطة:
#2
مشكوور اخى
الرد }}}
تم الشكر بواسطة:
#3

السلام عليكم ورحمة الله وبركاته






بارك الله فيك أخي الاستاذ سجـّــــاد

لو مثلت الكود بمثال يكون أفضل، لآن البعض لا يعرف كيف يستخدمه.





السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة:
#4
السلام عليكم

تفضل اخي ابو رائد

الرابط

بالتوفيق ان شاءالله
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  المعالجةالصورية (الدرس الخامس(Mirror)) Sajad 0 1,859 31-01-13, 08:16 PM
آخر رد: Sajad
  المعالجةالصورية (الدرس الرابع) Sajad 2 2,282 29-01-13, 10:44 PM
آخر رد: Sajad
  المعالجة الصورية (الدرس الثاني) Sajad 0 2,757 01-10-12, 05:45 PM
آخر رد: Sajad
  المعالجة الصورية (الدرس الاول) Sajad 0 3,142 01-10-12, 05:11 PM
آخر رد: Sajad

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم