MATLAB ועיבוד תמונות

shmints

New member
MATLAB ועיבוד תמונות

איך ממירים ממרחב-צבע כלשהו (למשל RGB) למרחב הצבע L*a*b?
 

neko

New member
אני מניח שהכוונה במרחב הצבע השני

היא למרחב HSL (Hue, saturation, luminocity). אני לא מכיר פונק' פנימית של MATLAB או שעושה זאת ואם כן אז בגוגל ודאי ימצא מישהו שיודע
אבל בעיקרון זה לא אמור להיות נורא מסובך לכתוב כזאת (יצויין למען הפרוטוקול שמעולם לא למדתי או עשיתי את זה, אז כל מה שאני כותב הוא הערכה שאני בונה תוך כדי). ה-RGB הוא בין 0 ל255 לכל אחד משלושת הצבעים. ה-LUMINOCITY מתקבל, כך נראה, ממוצע של ערכי הRGB, מנורמל ל0-100. ה-HUE מתקבל ע"י הצבע עצמו, בסקלה של 0-358 (מעגל סגור, 359 בעצם זהה ל0), באופן רציף כך: 0 - אדום לגמרי (100% R) 60 - צהוב לגמרי (100% R G) 120 - ירוק לגמרי (G 100%) 180 - תכלת לגמרי (100% G B) וכו' עד 359 שהוא שוב אדום לגמרי, ולמעשה שווה ל0. ה-SATURATION, בין 0 ל-100 גם, מתקבל ע"י הCONTRAST, כלומר המרחקים בין הצבעים. כאשר הSAT הוא 0, התמונה מאוזנת (כלומר R=G=B). כאשר הSAT הוא 100, הצבעים פזורים קיצונית (לא יתכן במצב של S=100 ש-R,G,B כולם יהיו שונים מ0). הוא פשוט מעלה את הקטנים על חשבון הגדולים ומקרב את כולם לאיזון. עם המידע הזה, אפשר לנסות לבנות פונק' שתמיר. בוחר הצבעים של WINDOWS עזר לי להגיע למסקנות הללו (אפשר להגיע אליו בPAINT או ע"י שינוי צבע הרקע של הDESKTOP).
 

shmints

New member
אז זהו ש...

לא מדובר במרחב HSL, אלא במרחב L*a*b (אכן יש מרחב כזה
) ומצאתי, תחת Image Processing toolbox חדש, אחרון ומעודכן של MATLAB (גירסה 6.5, 13) יש פוקנציות שעושות את הנדרש: makecform ו-applycform (כשפרמטר הרלוונטי לפונקצית הmake, היא srgb2lab) בכל אופן, תודה על ההסבר ועל המאמץ
 
למעלה