الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

gray scale image

مغلق
بدأه bayana في 9 مايو 2007 · 18 رد · 1,511 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا عندي صورة واريد افلترها باستخدام

median filter

حاليا قرأت الصورة وسيفتها في

txt file

على هيئة ارقام تعبر عن قيمة كل بكسل في الصورة

اولا

اريد اقرأ من الفايل بحيث تكون مصفوفة من بعدين 3*3

فكيف تتم القراءة؟؟؟؟

ثانيا

احتاج لارجاع الصورة الى

red green blue

فكيف يتم ذلك؟؟

وشكرا جزيلا

#2

وهو لازم نعمل كده و لا أنت عايز النتيجة و خلاص ؟

راجع : فلاتر للصور

#3

شكرا اخي وموضوع الفلاتر طليت عليه

بس بصراحة انا جديد في الفيجوال

Option Explicit

Private Prog As New pcProgressBar

ما فهمت هذا الكود

واذا ممكن تشرح لي اكثر عن البرنامج

شكرا جزيلا

#4

السؤال يكون بموضوعه و ليس بموضوع آخر.

Option Explicit لأجبارى كمبرمج على تعريف كل المتغيرات و الثوابت و ............ فى المشروع ( حتى لا أنسى واحدة )

Private Prog As New pcProgressBar لتعريف Object من نوع pcProgressBar و أسميته Prog أختصارا لـ Progress

راجع الـ Class Module المسمى pcProgressBar

ملحوظة الفلاتر نفسها بالـ Module المسمى ModFilters

تم تعديل هذه المشاركة بواسطة msayed2004 في 9 مايو 2007 في 14:57

#5

جميعا نعرف ان الصورة عبارة عن red green blue

وانا عندي صورة اريد اسوي لها median filter

هذا الفلتر يقوم بمقارنة البكسل بجيرانه بحيث يكون ترتيبه هو الاوسط

بمعنى عندنا array 3*3 نقوم بترتيب الارقام المعبرة عن قيمة البكسل تصاعديا او تنازليا والرقم الخامس من حيث الترتيب يكون هو median فنستبدله بقيمة (2,2)

هنا قمنا بمقارنة البكسل (2,2) بجيرانه

فهل انا بحاجة لاعادة الصورة لاصلها اي red green blue لاقوم بعملية الترتيب واحتساب الميدين؟؟

ففي حالة gray scale image يكفي ان احدد احد هذه الالوان لاقوم بعد ذلك بالترتيب واحتساب الميدين

فكيف يتم تحديدها؟؟؟؟

مع جزيل الشكر

#6

دالة GetPixel تقوم بأعطائنا قيمة الـ RGB للـ Pixel المطلوب , ثم SetPixel لضبط الـ Pixel المطلوب كما نريد.

#7

شكرا لك اخي msayed2004

جربت GetPixel وSetPixel

لكن ما عرفت شلون اطلع RED GREEN BLUE

picture = SetPixelV(Picture2.hDC, i, j, RGB(255, 0, 0))

هذا الكود يطلع الصورة بلون احمر من دون اي ملامح لها

وشكرا

#8

الـ GetPixel يعود بقيمة اللون كـ Long لعكسها راجع : Long to RGB

تم تعديل هذه المشاركة بواسطة msayed2004 في 14 مايو 2007 في 19:13

#9

شكرا اخي على المساعدة

انا استخدمت هذه

Function Color_to_RGB (Color As Long , R As Integer , G As Integer , B As Integer ) As Long

R = Color Mod 256

G = (Color \ 256 ) Mod 256

B = (Color \ 256 \ 256 ) Mod 256

End Function

الاولى اظهرت الصورة بالاحمر

لكن لم استطع اظهار الصورة بالاخضر او الازرق

وجربت هذا الكود

R = Color And &HFF&

G = (Color And &HFF00&) \ &H100&

B = (Color & And &HFF0000) \ &H10000

ونفس العملية

#10

يا سيدى ما تراجع الفلاتر اللى انا وضعت لينكها فوق !

#11

شكرا جزيلا

عرفت كيف اظهر الصورة باللون الاخضر والازرق

واستطعت ان اجعل الصورة تظهر بدمج هذين اللونين وذلك باستخدام هذا الكود

Case Red

SetPixel TargetPic.hdc, X, Y, RGB(RPattern, 0, 0)

Case Green

SetPixel TargetPic.hdc, X, Y, RGB(0, GPattern, 0)

Case Blue

SetPixel TargetPic.hdc, X, Y, RGB(0, 0, BPattern)

SetPixel TargetPic.hdc, X, Y, RGB(0, GPattern, BPattern)

شكرا مرة ثانية

#12

شكرا جزيلا على الردود

طيب عندي سؤال

الرقم لما يتخزن long يكون كم بايت؟؟؟ 3 او 4؟؟؟

هل بايت R

وبايت G

وبايت B

ام ماذا??

ولما نسيفه في array

ياخذ كل بايت خانه؟؟؟

#13

مش فاهم تقصد ايه خالص !

#14

حين نحصل على pixel يكون long

ويحتوي على R G B

لكل واحد بايت

فهل لما نسيف قيمة البكسل(in long) في array ياخذ ثلاث خانات ؟؟

يعني خانة تكون R والثانية Gوالثالثة B??

ام ان LONG ياخذ 4 بايت؟؟؟واذا كان 4 بايت فلماذا؟؟

#15

Array ايه ؟

#16

اخي الكريم

كما ذكرت سابقا انا اريد اعمل MEDIAN FILTER

لذلك انا بحاجة لقيمة كل بكسل

احتى ارتبهم واقارن بالميدين

القيمة الي طبعتها عبارة عن LONG

طلعت RGB وطبعته فما كان يتجاوز قيمته عن 256

سؤالي

لما تكون قيمة البكسل ب LONG

هي عبارة عن 3 او 4 بايت؟؟؟؟

وهل كل بايت ياخذ قيمة في ARRAY يعني ياخذ 3 خانات

ام ان LONG يكون في خانة وحدة؟؟؟؟؟

#17

اخي Mohammed Sayed انا اقصد long بيكون

R G B +ALPHA???

لهذا يكون 4 بايت؟؟؟

امن انه 3 بايت؟؟؟؟

وانا قرأت الصورة على هيئة LONG وسيفتها في txt

وكانت على هيئة array in 2D

فكيف اقرأ هذه الارقام مرة ثانية من الفايل علشان اعمل لها سورت واحدد الميدين

وبعد ذلك اطبع الصورة

وشكرا للجميع

#18

اذا في احد يقدر يعطيني الجواب؟؟؟

البكسل لما يكون long هل يكون

بايت red

بايت green

بايت blue

بايت alpha

ولما اضع البكسل في array كل بكسل يكون حد في المصفوفة؟؟؟؟

ام ان يكون 3 حدود؟؟؟ حدred حد green وحد blue

-waf

#19

شكرا لكم اخوتي على المرور

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

البكسل في vb لما نقرأه يكون RGB

من غير alpha

اي انه 3 بايت فقط

شكرا مرة اخرى

هذا الموضوع مغلق.

مواضيع مشابهة