ซ่อมไฟล์ jpg ที่ใช้งานไม่ได้


11

สวัสดีฉันแน่ใจว่ามีคำถามที่คล้ายกันจำนวนมากถาม แต่หลังจากค้นหามากฉันไม่พบโพสต์อธิบายสถานการณ์ของฉัน

ฉันมีไฟล์ jpg บางสีที่มีสีผิดหลังจากจุดหนึ่งและทุกพิกเซลจะถูกเลื่อนไปทางซ้าย ฉันคิดว่าเป็นเพราะไบต์ที่หายไปบางจุด ณ จุดที่มีการเปลี่ยนแปลง ฉันพยายามแก้ไขไฟล์ด้วย vi แต่ดูเหมือนว่าเป็นไปไม่ได้ที่จะหาว่าไบต์ที่ขาดหายไปนั้นเป็นอย่างไร vi ก็ซับซ้อนมากในการใช้ ฉันลองนาโนด้วย แต่มันก็ไม่ปลอดภัย

นี่คือหนึ่งในภาพที่เป็นปัญหา:

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นฉันต้องการถามคุณสองคำถาม:

  1. ฉันจะซ่อมแซมรูปภาพใน Linux ได้อย่างไร
  2. ฉันจะเปิดและแก้ไขไฟล์อย่างปลอดภัยในตัวแก้ไขข้อความไบนารีภายใต้ Linux ได้อย่างไร

แก้ไข: ใช้ hexedit ฉันค้นพบว่าจากตำแหน่ง 0x27F000 ถึง 0x27F403 มีเพียง 0xff เท่านั้นและจาก 0x27F404 ถึง 0x27FFFF มีศูนย์เป็น 0x00 เท่านั้น สิ่งนี้ทำให้สิ่งนี้:

    0027EFF0   F8 83 C3 E2  09 35 AF 13  44 6E C5 FD  C7 EF 23 E8  .....5..Dn....#.
    0027F000   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................
    [...]
    0027F400   FF FF FF FF  00 00 00 00  00 00 00 00  00 00 00 00  ................
    [...]
    0027FFF0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00280000   8F 39 6E 47  4F 43 5F 36  7C 73 66 F1  0D AE AD AF  .9nGOC_6|sf.....

การเปลี่ยนไบต์เหล่านี้ด้วยตัวเลขสุ่มฉันสามารถยกเลิกการเลื่อนภาพ แต่ยังคงมีปัญหาสี

มีใครบางคนชี้ให้ฉันดูเอกสารประกอบบางส่วนเกี่ยวกับการเข้ารหัส jpeg เพื่อที่ฉันจะได้ทราบวิธีการทราบว่าบล็อก 8x8 นั้นสิ้นสุดลงที่ใด

ฉันสงสัยว่าเหตุใดตำแหน่งจึงแม่นยำ (0x27F000 ถึง 0x27FFFF) นี่อาจเป็นข้อผิดพลาดของลูกเบี้ยวหรือการ์ดหน่วยความจำที่ฉันใช้หรือไม่


ฉันเคยเกิดเหตุการณ์เช่นนี้ขึ้นครั้งเดียวกับภาพชุดใหญ่ ฉันเพิ่งจะลบพวกเขามันน่าละอายจริงๆ ฉันสนใจที่จะทราบว่าคุณประสบความสำเร็จในการซ่อมแซมสิ่งเหล่านี้หรือไม่
dtmland

ใช่มันเป็นความอัปยศฉันพยายามหาวิธีการเข้ารหัสไฟล์ jpeg นี้มันเป็นเพียงหนึ่งบรรทัด 8x4000px ซึ่งฉันจะต้องลบ ในไฟล์นี้มีความเสียหาย 4KB อย่างแน่นอนในไฟล์ 4.4MB มันน้อยกว่า 0.1% !!!
Falk

คำตอบ:


2

บทความวิกิพีเดียในhttp://en.wikipedia.org/wiki/JPEG#Entropy_codingมีข้อมูลมากมาย - สิ่งที่เกี่ยวข้องกับปัญหาปัจจุบันของคุณมากที่สุดคือ:

ค่าสัมประสิทธิ์ DC เชิงปริมาณก่อนหน้านี้ใช้เพื่อทำนายค่าสัมประสิทธิ์ DC เชิงปริมาณในปัจจุบัน ความแตกต่างระหว่างทั้งสองถูกเข้ารหัสมากกว่าค่าจริง การเข้ารหัสของ 63 สัมประสิทธิ์ AC เชิงปริมาณไม่ได้ใช้การทำนายที่ต่างกัน

สีที่เลื่อนในส่วนที่เหลือของภาพนั้นเกิดจากค่าสัมประสิทธิ์ DC ที่ไม่ดีเพียงตัวเดียวที่ลดลงเหลือทั้งหมด คุณอาจจะสามารถหาพื้นที่เล็ก ๆ (อาจจะเป็นหนึ่งไบต์หรือสองคน - มันอาจเป็นบางส่วนของลำดับบิต) ที่ส่งผลกระทบต่อสีอย่างน่าเชื่อถือและลองใช้ค่าที่แตกต่างกันเป็นจำนวนมาก

อาจง่ายกว่าในการแก้ไขภาพในโปรแกรมแก้ไขกราฟิก - ดูเหมือนว่าคุณโพสต์นอกเหนือจากการเลื่อน (และการพัน) อาจมีความสว่างต่ำกว่าคุณสามารถเลือกพื้นที่และใช้เครื่องมือระดับ คนอื่น ๆ ที่มีการเปลี่ยนสีที่เกี่ยวข้องมากขึ้นคุณอาจได้รับผลลัพธ์ที่ดีพอโดยดูที่การสลายตัวในช่องสี (JPG อาจเป็น RGB หรือ Y'CbCr) และแก้ไขแต่ละช่องแยกกัน

แก้ไข: โอ๊ะฉันไม่เห็นว่าคำถามของคุณเก่าแค่ไหน อาจจะเป็นประโยชน์กับคุณหรือคนอื่น


ขอบคุณมากไม่สนใจอายุของคำถามยังมีภาพและอีกมากมาย
Falk

ฉันคิดว่ามันเป็นความอัปยศที่กล้องไม่คาดคิดว่าจะเกิดสถานการณ์เช่นนี้พวกเขาควรวางบล็อคหลักทุก ๆ แถว (32 แถว) ในบล็อค ปัญหาอื่นคือฉันไม่รู้ด้วยซ้ำว่ามีการบีบอัดแบบไม่สูญเสียข้อมูลที่ใช้หลังจากการสูญเสียเช่น Huffman ฉันอยากเล่นกับไบต์มากกว่าเปิดภาพด้วยบรรณาธิการกราฟิก: ส่วนใหญ่พวกเขาไม่ต้องการเปิดภาพเหล่านี้ที่สองฉันไม่คิดว่าฉันสามารถหาการแก้ไขที่แน่นอนที่เล่นกับตัวเลื่อนบางตัว @ Random832 ขอบคุณและบอกฉันหน่อยถ้าคุณรู้อะไรมากกว่านี้
Falk

1

2) ฉันจะเปิดและแก้ไขไฟล์อย่างปลอดภัยในตัวแก้ไขข้อความไบนารีภายใต้ Linux ได้อย่างไร

บรรณาธิการไบนารีที่ยอดเยี่ยมมากมายสามารถดูได้ที่นี่: /programming/839227/how-to-edit-binary-file-on-the-unix-systems

รายการโปรดส่วนตัวของฉันคือกลุ่มที่มี:%! xxd hack และhexedit


2
ตกลงและใช้ง่ายกว่านี้ไหม? เหมือนนาโน
Falk

สิ่งที่ง่ายเช่นshed?
Attie

0

คุณเคยลองphotorecไหม คุณสามารถติดตั้งบน Ubuntu ได้ดังนี้:

sudo apt-get install testdisk

ตรวจสอบคู่มือด้วย:

man photorec

และเพียงเรียกใช้photorecจาก terminal เช่นนั้น:

photorec

มันจะขอให้คุณเลือกแหล่งที่มาและปลายทางและพยายามกู้คืนไฟล์ jpg โดยอัตโนมัติ

เพื่อป้องกันความเสียหายที่เป็นต้นฉบับฉันแนะนำให้ทำสำเนาด้วยddคำสั่ง โชคดี!


1
สวัสดี photorec ถูกออกแบบมาเพื่อกู้คืนไฟล์จากระบบไฟล์ที่เสียหายในกรณีของฉันระบบไฟล์นั้นดี แต่ภาพเสียหายดังนั้นจึงเป็นสถานการณ์ที่แตกต่างกันโดยสิ้นเชิง
Falk

3
สวัสดีอย่างที่ฉันเขียนไว้ก่อนหน้านี้ไม่มีอะไรผิดปกติกับระบบไฟล์มันเป็นไฟล์ JPEG ที่มีข้อผิดพลาดขอบคุณอยู่ดี
Falk

1
ฉันรู้ว่า photorec ทำงานอย่างไรและมันไม่ใช่สิ่งที่ฉันต้องการมันก็แค่คัดลอกรูปภาพตามที่มันซ่อมไม่ได้
Falk

1
ฉันแค่พยายามช่วย คุณพิมพ์ดังนั้นคุณไม่ลอง? จริง ๆ แล้วฉันวิ่งมันบนการ์ด SD และใช่มันก็อปปี้มัน แต่มันก็แก้ไขได้เช่นกัน อดไม่ได้ที่จะลองใช่ไหม ถ้ามันไม่คุ้มค่าที่จะลองก็ดีโชคดี ทั้งหมดที่ฉันพูดคือมันซ่อมแซมให้ฉัน ฉันจะไม่ตอบสนองใด ๆ เพิ่มเติมเพื่อหลีกเลี่ยงการสนทนาที่ไม่มีที่สิ้นสุด
Vincent Gerris

1
ฉันจะไม่ลองใช้เพราะ photorec นั้นต้องรันด้วยอุปกรณ์เป็นพารามิเตอร์ไฟล์ jpg ที่ฉันมีอยู่ใน hdd ของฉันซึ่งดีมาก มันเป็นสถานการณ์ที่แตกต่าง อย่างที่ฉันบอกไปแล้ว
Falk

-1

ฉันเพิ่งใช้ Photorec เพื่อกู้ภาพจากการ์ด SD ที่เสียหาย แม้ว่าจะไม่ได้กู้คืนไฟล์ทั้งหมด แต่ก็เป็นงานที่ยอดเยี่ยมในการกู้คืนไฟล์จำนวนมาก จากที่กล่าวมาวิดีโอ MP4 ถูกกู้คืนมา แต่ไม่สามารถเปิดได้ กู้คืนไฟล์ JPEG บางไฟล์ แต่ยังไม่สามารถดูหรือทำให้ยุ่งเหยิงได้จริงเนื่องจากตัวอย่างที่ให้ไว้ในตอนต้นของเธรดนี้ Photorec ไม่ได้แก้ไข

Bottom line: Photorec ถูกออกแบบมาเพื่อดึงไฟล์ที่หายไปจาก FILE SYSTEMS ที่เสียหาย แต่เห็นได้ชัดว่าไม่ได้ทำอะไรเพื่อกู้คืนเนื้อหาของไฟล์ที่เสียหาย


สวัสดี Wander ฉันรู้จัก photorec แต่นั่นไม่ใช่สิ่งที่ฉันกำลังมองหา มันจะไม่แก้ไขไฟล์ที่เสียหาย
Falk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.