Sửa các tệp jpg bị hỏng


11

Xin chào Tôi chắc chắn có rất nhiều câu hỏi tương tự được hỏi, nhưng sau khi tìm kiếm rất nhiều, tôi không tìm thấy bài đăng nào mô tả tình huống của mình.

Tôi có một số tệp jpg có một số màu sai sau một điểm nhất định và mọi pixel đều bị dịch chuyển sang trái. Tôi nghĩ rằng điều này là do một số byte bị thiếu tại điểm mà nó thay đổi. Tôi đã cố gắng chỉnh sửa tệp bằng vi nhưng dường như không thể tìm ra các byte bị thiếu ở đâu, vi cũng rất phức tạp để sử dụng. Tôi cũng đã thử nano nhưng nó không an toàn nhị phân.

Đây là một trong những hình ảnh trong câu hỏi:

nhập mô tả hình ảnh ở đây

Vì vậy, tôi muốn hỏi bạn hai câu hỏi:

  1. Làm thế nào tôi có thể sửa chữa những hình ảnh như vậy trong Linux?
  2. Làm cách nào tôi có thể mở và chỉnh sửa tệp một cách an toàn trong trình soạn thảo văn bản nhị phân trong Linux?

Chỉnh sửa: sử dụng hexedit Tôi phát hiện ra rằng từ vị trí 0x27F000 đến 0x27F403 chỉ có những cái 0xff và từ 0x27F404 đến 0x27FFFF chỉ có các số 0x00. Điều này làm cho một cái gì đó như thế này:

    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.....

Thay đổi các byte này bằng các số ngẫu nhiên tôi có thể làm mờ hình ảnh, nhưng vẫn còn vấn đề về màu sắc.

Ai đó có thể chỉ cho tôi một số tài liệu về mã hóa jpeg để tôi có thể tìm ra làm thế nào để biết một khối 8 x 8 kết thúc ở đâu.

Tôi đang tự hỏi tại sao các vị trí rất chính xác (0x27F000 đến 0x27FFFF), đây có thể là lỗi của máy ảnh của tôi hoặc thẻ nhớ tôi đã sử dụng không?


Tôi đã có điều này xảy ra một lần với một tập hợp lớn các hình ảnh. Tôi vừa mới xóa chúng, thật xấu hổ. Tôi muốn biết liệu bạn có thành công trong việc sửa chữa những thứ này không, bạn đã có một công việc khó khăn trước mắt.
dtmland

Vâng, đó là một sự xấu hổ, tôi đang cố gắng tìm ra cách các tệp jpeg này được mã hóa, nó chỉ là một dòng 8x4000px mà tôi sẽ phải xóa. Trong tệp này có chính xác 4KB bị hỏng trong tệp 4,4 MB Nó ít hơn 0,1% !!!
Falk

Câu trả lời:


2

Bài viết trên wikipedia trên http://en.wikipedia.org/wiki/JPEG#Entropy_coding có rất nhiều thông tin - có liên quan nhất đến vấn đề hiện tại của bạn là vấn đề này:

Hệ số DC được lượng tử hóa trước đó được sử dụng để dự đoán hệ số DC được lượng tử hóa hiện tại. Sự khác biệt giữa hai được mã hóa chứ không phải giá trị thực tế. Mã hóa của 63 hệ số AC được lượng tử hóa không sử dụng sự khác biệt dự đoán như vậy.

Sự thay đổi màu sắc trong phần còn lại của hình ảnh được gây ra bởi một hệ số DC xấu duy nhất xếp tầng cho tất cả các phần còn lại. Bạn có thể tìm thấy một khu vực nhỏ (có thể một byte, có thể hai - thực sự có thể là một chuỗi bit) ảnh hưởng đáng tin cậy đến màu sắc và thử một số lượng lớn các giá trị khác nhau cho điều đó.

Có thể dễ dàng hơn để sửa ảnh trong trình chỉnh sửa đồ họa - có vẻ như ảnh bạn đã đăng, không phải là ca (và bao quanh), có thể chỉ đơn giản là có độ sáng thấp hơn, bạn có thể chọn vùng và sử dụng công cụ Levels. Những người khác có sự thay đổi màu liên quan nhiều hơn, bạn có thể có được kết quả đủ tốt bằng cách xem xét sự phân tách trong các kênh màu (JPG có thể ở RGB hoặc Y'CbCr) và sửa từng kênh riêng lẻ, có thể hoán đổi các kênh.

EDIT: Rất tiếc, tôi không thấy câu hỏi của bạn bao nhiêu tuổi. Chà, có lẽ điều này sẽ hữu ích cho bạn hoặc người khác.


Rất nhiều lời cảm ơn, đừng quan tâm đến độ tuổi của câu hỏi, vẫn có hình ảnh và một số điều nữa.
Falk

Tôi nghĩ thật xấu hổ khi máy ảnh không mong đợi tình huống như vậy, họ nên đặt một số khối chính cho mỗi n (32) hàng khối. vấn đề khác là tôi thậm chí không biết có áp dụng nén không mất dữ liệu nào sau khi mất dữ liệu không, như Huffman. Tôi thà chơi xung quanh với một số byte hơn là mở hình ảnh bằng các trình chỉnh sửa đồ họa: đầu tiên hầu hết trong số họ không muốn mở những hình ảnh này, thứ hai tôi không nghĩ rằng tôi có thể tìm thấy sự điều chỉnh chính xác khi chơi xung quanh với một số thanh trượt. @ Random832 cảm ơn và xin vui lòng cho tôi biết nếu bạn biết thêm điều gì.
Falk

1

2) Làm cách nào tôi có thể mở và chỉnh sửa tệp một cách an toàn trong trình soạn thảo văn bản nhị phân trong Linux?

Rất nhiều trình soạn thảo nhị phân tuyệt vời có thể được tìm thấy ở đây: /programming/839227/how-to-edit-binary-file-on-the-unix-systems

Sở thích cá nhân của tôi là vim với:%! Xxd hack và hexedit


2
Ok, và một cái gì đó dễ sử dụng hơn? như nano.
Falk

một cái gì đó dễ dàng như thế shednào?
Attie

0

Bạn đã thử photorecchưa Bạn có thể cài đặt nó trên Ubuntu như thế này:

sudo apt-get install testdisk

Kiểm tra hướng dẫn với:

man photorec

và chỉ chạy photorectừ thiết bị đầu cuối như vậy:

photorec

Nó sẽ yêu cầu bạn chọn nguồn và đích và cố gắng tự động khôi phục các tệp jpg.

Để tránh làm hỏng bản gốc, tôi khuyên bạn nên tạo một bản sao bằng ddlệnh. Chúc may mắn!


1
Xin chào, photorec được thiết kế để khôi phục các tệp từ hệ thống tệp bị hỏng, trong trường hợp của tôi, hệ thống tệp vẫn ổn, nhưng hình ảnh bị hỏng nên đó là một tình huống hoàn toàn khác.
Falk

3
Xin chào, như tôi đã viết trước đó, không có gì sai với hệ thống tệp, đó là tệp JPEG có lỗi, dù sao cũng cảm ơn.
Falk

1
Tôi biết làm thế nào photorec hoạt động, và đó không phải là những gì tôi cần, nó sẽ chỉ sao chép hình ảnh như đang sửa chữa nó.
Falk

1
Tôi chỉ đang cố gắng giúp đỡ. Bạn gõ, vì vậy bạn đã không thử? Tôi thực sự đã chạy nó trên thẻ SD và có nó sao chép chúng nhưng nó cũng sửa chúng. Không thể đau để thử, phải không? Nếu nó không đáng để thử, tốt, chúc may mắn. Tất cả tôi đang nói là nó đã sửa chữa nó cho tôi. Tôi sẽ không trả lời thêm nữa để tránh cuộc thảo luận bất tận.
Vincent Gerris

1
Tôi sẽ không thử vì photorec có thể chạy với một thiết bị làm tham số, tệp jpg tôi có trên hdd của tôi là hoàn toàn tốt. Đó chỉ là một loại tình huống khác nhau. Như tôi đã nói cảm ơn.
Falk

-1

Tôi vừa sử dụng Photorec để khôi phục ảnh từ thẻ SD bị hỏng. Mặc dù nó không phục hồi tất cả các tập tin, nhưng nó đã làm rất tốt để phục hồi một số lượng tốt trong số đó. Như đã nói, video MP4 đã được phục hồi nhưng không thể mở được. Một số tệp JPEG đã được khôi phục nhưng chúng cũng không thể được xem hoặc thực sự bị rối, vì mẫu được cung cấp ở đầu chuỗi này. Photorec đã không sửa chúng.

Điểm mấu chốt: Photorec được thiết kế để truy xuất các tệp bị mất từ ​​HỆ THỐNG TẬP TIN bị hỏng nhưng dường như không làm gì để khôi phục nội dung của PHIM bị hỏng.


Xin chào, Wander, tôi biết photorec, nhưng đó không phải là thứ tôi đang tìm kiếm. Nó sẽ không sửa các tập tin bị hỏng.
Falk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.