Có 2 phần của vấn đề. Đầu tiên là bạn muốn chuyển đổi từ 16 bit thành 8 bit và tùy chọn -scale của gdal_translate thực hiện điều đó, như đã đề cập trong câu trả lời trước.
-scale minOriginal maxOriginal minOutput maxOutput
Vấn đề thứ hai là vấn đề tăng cường độ tương phản: khi bạn bán lại, bạn muốn có độ tương phản cao cho các pixel mà bạn quan tâm. CẢNH BÁO: Không có độ tương phản "ma thuật" bởi vì, khi bạn bán lại, bạn thường mất một số thông tin : nó được thực hiện để cải thiện trực quan hóa dữ liệu và các phần mềm chuyên nghiệp thực hiện việc này một cách nhanh chóng mà không cần viết một tệp mới. Nếu bạn muốn xử lý thêm dữ liệu của mình, trình duyệt địa lý "đen" của bạn chứa thông tin tương tự như jp2 của bạn và sẵn sàng để được xử lý. Nếu bạn tính toán, ví dụ, chỉ số thực vật, điều này nên được thực hiện với các giá trị phản xạ "ban đầu", chứ không phải các giá trị phản xạ. Điều đó đang được nói, đây là một số bước để tạo ra một hình ảnh 8 bit được tăng cường trực quan.
@ben đã cho bạn một phương pháp chung để giảm độ phản xạ từ 0-1 (nhân với 10000 với sản phẩm này) thành 0-255. Điều này là an toàn (không loại trừ), nhưng chỉ có mây và một số loại đất trống có độ phản xạ thực sự cao, vì vậy bạn không nhìn thấy nhiều trên đất liền (trừ đất trống) và không có gì trong nước. Do đó, các cải tiến tương phản thường được áp dụng trên hình ảnh bao gồm chỉ lấy một tập hợp con của phạm vi đầy đủ. Về mặt an toàn, bạn có thể sử dụng kiến thức rằng độ phản xạ tối đa của vật liệu bề mặt Trái đất thông thường thường dưới 0,5 / 0,6 (xem tại đâycho một số ví dụ). Tất nhiên, điều này giả định rằng hình ảnh của bạn đã được hiệu chỉnh trong không khí (hình ảnh L2A). Tuy nhiên, phạm vi phản xạ khác nhau trong mỗi dải quang phổ và bạn không phải lúc nào cũng có bề mặt Trái đất sáng nhất trong khu vực bạn quan tâm. Đây là cách phương thức "an toàn" trông như thế nào (với độ phản xạ tối đa là 0,4, giống như 4096 được đề xuất bởi @RoVo)
Mặt khác, độ tương phản có thể được tối ưu hóa cho mỗi băng tần. Bạn có thể xác định phạm vi này theo cách thủ công (ví dụ: bạn quan tâm đến màu nước và bạn biết giá trị phản xạ dự kiến tối đa của nước) hoặc dựa trên thống kê hình ảnh. Phương pháp thường được sử dụng bao gồm giữ khoảng 95% giá trị và "loại bỏ" (quá tối -> 0 hoặc quá sáng -> 255) phần còn lại, tương tự như xác định phạm vi dựa trên giá trị trung bình +/- 1,96 * độ lệch chuẩn. Tất nhiên, đây chỉ là một xấp xỉ vì nó giả sử phân phối bình thường, nhưng nó hoạt động khá tốt trong thực tế (ngoại trừ khi bạn có quá nhiều đám mây hoặc nếu các số liệu thống kê sử dụng một số giá trị NoData).
Hãy lấy ban nhạc đầu tiên của bạn làm ví dụ:
trung bình = 320
std = 536
Khoảng tin cậy 95% = [-731: 1372]
nhưng tất nhiên độ phản xạ luôn lớn hơn 0, do đó bạn phải đặt mức tối thiểu là 0.
gdal_translate -scale 0 1372 0 255 -ot Byte B01.jp2 B01-scaled.tif
Và nếu bạn có phiên bản gdal gần đây, thì bạn có thể sử dụng -scale_ {band #} (0 255 là đầu ra mặc định, vì vậy tôi không lặp lại nó) để bạn không cần phải chia các dải đơn. Ngoài ra tôi đã sử dụng vrt thay vì tif như một tệp trung gian (không cần phải viết một hình ảnh đầy đủ: một hình ảnh ảo là đủ)
gdalbuildvrt -separate stack.vrt B04.jp2 B03.jp2 B02.jp2
gdal_translate -scale_1 0 1372 -scale_2 0 1397 -scale_3 0 1430 -ot Byte stack.vrt im_rescaled.tif
Lưu ý rằng số liệu thống kê của bạn bị ảnh hưởng mạnh mẽ bởi các "tạo tác" như đám mây và NoData. Một mặt, phương sai được đánh giá quá cao khi bạn có các giá trị cực đoan. Mặt khác, trung bình của bạn bị đánh giá thấp khi có một lượng lớn các giá trị "không" (làm cho hình ảnh tương phản tự động quá sáng như trong ví dụ) và nó sẽ bị đánh giá quá cao nếu có phần lớn các đám mây (sẽ tạo ra hình ảnh quá tối). Ở giai đoạn này, kết quả do đó sẽ không phải là tốt nhất bạn có thể nhận được.
Một giải pháp tự động sẽ được giá trị nền và đám mây thiết lập để "nodata" và tính toán số liệu thống kê của bạn mà không NoData (xem bài này để biết chi tiết về tính toán số liệu thống kê mà không NoData, và cái này cho một ví dụ để các giá trị thiết lập lớn hơn 4000 để NoData cũng ). Đối với một hình ảnh duy nhất, tôi thường tính toán các số liệu thống kê về tập hợp con không có đám mây lớn nhất có thể. Với các số liệu thống kê từ một tập hợp con không có "NoData" (phía trên bên trái hình ảnh của bạn), điều này cho kết quả cuối cùng. Bạn có thể thấy rằng phạm vi là khoảng một nửa phạm vi "an toàn", có nghĩa là bạn có độ tương phản gấp đôi:
gdal_translate -scale_1 38 2225 -scale_2 553 1858 -scale_3 714 1745 -ot Byte stack.vrt im_rescaled.tif
Như một nhận xét cuối cùng, gdal_constrast_stretch có vẻ tốt nhưng tôi chưa thử nghiệm
gdalinfo -hist merged.tif