שְׁאֵלָה:
מהי הדרך הזו לייצג צבע בפורמט תמונה לא ידוע זה
patr0805
2014-03-30 17:00:12 UTC
view on stackexchange narkive permalink

בסדר, יש לי תמונה PS3 דחוסה עם וריאציה של האלגוריתם LZ (בתים קסומים 43 5A 32 00 ) (שחררתי אותו בהצלחה) ומה שאני מקבל מהצורה שנדחסה הוא קבוצה של צבעי / פיקסלים של ARGB (מספר הבתים בקובץ הדחוס הוא 4 * רוחב * גובה ולכן אני יודע שהקובץ שנדחס מכיל ככל הנראה רק את נתוני ה- ARGB הגולמיים).

הנה תמונה שממחישה את התוצאה של עיבוד נתוני ARGB (שקיפות שהושמטה מאפשרת לייצר את הדבר קל יותר).

תמונה דחוסה: enter image description here

צילום מסך של מהדורת PS3:

enter image description here

צילום מסך של מהדורת PSP:

enter image description here

מה שאני רוצה לדעת זה אם מישהו מכם יודע באיזה סוג לוגיקה משתמשים במבנה הצבע הזה? בעיניי זה נראה כאילו הוא נראה על הצבע האחרון מבחינת ציר ה- y. כאשר ערך אפס רק מקבל את הערך של הצבע האחרון של ציר ה- y. זה נראה כאילו אני צריך לשנות / לסכם צבעים יחד.

ניסיתי משתנה בשיטות. לדוגמא, כאן אני מנסה לאחסן מערך צבעים עם אפס צבע ולכל שורה, לסכם את הייצוג המספר השלם הלא-חתום של ARGB של מיקום x במערך עם הצבע החדש 'מספר שלם לא חתום -> A + B = C קוד>.

enter image description here

AB = C, פשוט נותן ג'יברי ורדרד ..

הנה כמה דוגמאות לערכי ARGB שאני משתמשת בהם כדי לנסות מצא פיתרון:

  x: 0, y: 24-27R G B137 195 255240 254 000014 000 255001 001 001  

זה אמור לתת צבע כחלחל (בהשוואה לצילום מסך של משחק) כמו: 145, 184, 219 .

* שימו לב שהתמונה שלי להשוואה אינה מדויקת. כלומר קיבלתי אותו מאותו משחק של פלטפורמה אחרת שבה משתמשים בפורמט אחר. מכיוון שגודל התמונה שונה. אני יכול לומר שהצבעים אינם זהים לזה של זה.

  x: 4, y: 22-28R G B137 195 255118 168 201255 204 161  

גם זה אמור לתת צבע כהה כהה כמו: 020, 068, 096 .

* שימו לב שהצבע המושווה במשחק אינו מדויק, התמונה כוללת שקיפות, כך שהמשחק התעסק כנראה עם ערכי הצבע של צילום המסך.

אז אם מישהו נתקל בדברים ככה בעבר ויכולתי לתת לי טיפ כלשהו, ​​אשמח מאוד. :)

האם ניסית לערוך את ערכי הבתים באופן שיטתי? האם 0 0 0 0, 0 0 0 255 ו / או 255 0 0 0 נותנים לך שחור? האם 255 255 255 0, 0 255 255 255 ו / או 255 255 255 255 נותנים לך לבן? האם ניסית להגדיר את השאר 3 בתים לאפסים (או ש- alpha יכול להיות 255) וההגדרה רק בת אחד בבת אחת ל 127 ואז 255? ואז בצע את אותו הדבר עבור כל הבתים, תוך שמירה על אפסים של ערכים של בתים אחרים. בדרך זו אתה אמור להיות מסוגל לאשר את הסדר של בתים אדומים, ירוקים, כחולים ואלפא ולראות אם הערכים שלהם הוסטו, למשל.
הקווים האופקיים שצריכים להיות בצבע אחיד, והיעדר קווים אנכיים, מצביעים על כך שכל שורה "חדשה" מאוחסנת כהבדל מהקו הקודם. (רגע, ניסית את זה). אוקיי, אתה רואה שיש לך משהו טוב יותר. האם אתה מעבד הצפה נכונה?
הצפה, ניסיתי לומר שאם המספר יורד מתחת לאפס אז זה צריך לגרום לתוצאה להיות שווה למספר המוחלט .. כלומר, -35 יהפוך ל 35. ניסיתי גם לומר שזה אמור לגרום ל 255-35, אך ללא הועיל. nrz נתנו לי רעיון שאני מנסה כרגע. אחזור עם הממצאים
במתמטיקה שלמה רגילה, הצפה פשוט * מתעלמת *. כשסופרים עם בתים, -35 = 256-35 = 221.
רק רעיון: האם ניתן לפצל את 4 הבתים לשני בתים לחומרה "גרועה", ו -2 בתים לחומרה "טובה"? אז משושה 12345678 פירושו (אלפא 1, אדום 2, ירוק 3, כחול 4) בתצוגה שאינה תומכת ב- RGB מלא של 8 סיביות, ו (אלפא 15, אדום 26, ירוק 37, כחול 48) על מלא צבע אחד? קידוד מסוג זה יכול לאפשר לחומרה האיטית כלל לא לקרוא את "סיביות ברזולוציה גבוהה", ולחסוך זמן במעבד בהשוואה לזריקת סיביות אלה בנפרד לכל פיקסל.
תודה על המידע ש- Jongware, לא ידעתי את זה. -Guntram Blohm, אני לא חושב שזה ככה מכיוון שמספר הבתים שווה לרוחב * גובה * 4 (ARGB) ואני לא חושב שתהיה סיבה לעשות משהו כזה לתמונות רקע ב- PS3. כרגע אני מכין תמונות מבחן קטנות בהן אוכל לראות כיצד המשחק מנהל אותן. אני אחזור כשיגיעו חדשות.
זה היה ניחוש פרוע, אך מכיוון שנראה ששגרת הפענוח שלך נכונה (הפריסה הכללית זהה בתמונה שלך ובתמונת ה- PSP), ונראה שלצבעים אין שום קשר לצבעים האמיתיים, חשבתי שאולי יש לפרש חצי בתים באופן שונה. ל- AARRGGBB ו- ARGBARGB יש 4 בתים לפיקסל.
כמו כן, אם לשפוט לפי התמונה ה"ירוקה "שלך, הייתי מנחש שהבייטים עבור החלק" השמאלי "של התמונה ואלה עבור החלק" הימני "משפיעים זה על זה, בהתחשב בקו האנכי הכחול שנמצא בחלק השמאלי שלך, אך לא במקור; אותו דבר עם הקו הצהוב בחלק הימני שלך, אך לא בחלק המקורי, שנראה כי הוא מאריך את הכחול.
זה יכול להיות אחד מ [אלגוריתמי מסנני PNG] (http://www.w3.org/TR/PNG-Filters.html). כדאי לנסות את אלה.
שתיים תשובות:
pdw
2014-07-03 01:04:54 UTC
view on stackexchange narkive permalink

שאלת את זה לפני כמה חודשים, אבל אני בכל זאת אענה.

ראשית, אני חושש שקוד הלחץ שלך הוא מטושטש. ישנם מספר קווים אופקיים של רעש, ואני די בטוח שהם לא אמורים להיות שם.

A + B = C הניחוש שלך היה נכון. שלט מעיד הם הקצוות האופקיים הגלויים אך הקצוות האנכיים הנסתרים. אני חושב שהטעות שלך הייתה פשוט לעשות את התוספת בסיור לא נכון.

כתבתי סקריפט פייתון קטן:

  מ- PIL import Imageim = Image.open ('orig .png ') w, h = im.sizepix = im.load () def add (p, q): # המר (R, G, B) כפולות למספרים שלמים של RGB, הוסף אותם והמיר חזרה pp = (p [ 0] << 16) + (p [1] << 8) + p [2] qq = (q [0] << 16) + (q [1] << [q] (r >> 16) & 0xFF, (r >> 8) & 0xFF, r & 0xFF) עבור y בטווח (1, h): עבור x בטווח (w) = pix [x , y], pix [x, y-1]) im.save ('out.png')  

התוצאה היא תמונה זו. ניתן לראות כי השליש העליון תואם את תמונת ה- PSP, אך החל מקו הרעש בתמונת המקור, התמונה הופכת מעוותת. תקן את קוד השחרור שלך והתמונה תצא נכון :)

processed image

אתה צודק, שמתי לב שיש בעיה באלגוריתם הלחץ שלי ותיקנתי אותו. לאחר מכן ניתן היה להשתמש בגישת סכום זו ללא בעיה.
user3286303
2014-03-31 01:16:32 UTC
view on stackexchange narkive permalink

לא בטוח איך אעבוד על זה אבל יש כלי שנקרא cantordust שיכול לעזור בזה, הוא יכול לדמיין מידע בינארי לפיקטוגרמות. הקישור נמצא למטה.

https://sites.google.com/site/xxcantorxdustxx/

אני לא חושב ש- cantordust יעזור הרבה בזה, מכיוון שהוא יוצר פלט גרפי שונה מסוגי קלט שונים; זה לא מתרגם את הקלט לתמונה טיפין טיפ. ובכל זאת, זה נראה כלי מעניין. האם חסר לי משהו, או שאין באתר קישור להורדה / ניסיון / יצירת קשר?


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...