Tại sao bản đồ Bump, Bình thường và Dịch chuyển không được sửa chữa gamma?


9

Vì vậy, tôi đang cố gắng che giấu điều này từ quan điểm khá kỹ thuật.

Khi bạn thêm bản đồ Bump hoặc Bình thường hoặc Dịch chuyển trong trình đổ bóng của mình, chúng sẽ không được sửa gamma. Nhưng kết cấu khuếch tán nên được. Nhưng tại sao?

Khi bạn lưu tệp ở dạng 8 bit (hoặc Số nguyên 16 bit) với định dạng như JPEG, PNG hoặc TIFF, chúng sẽ bị gamma 0,4545 (1 / 2.2) bị cháy. Vì vậy, một camera sẽ thu được ánh sáng từ thế giới thực (đó là tuyến tính) và khi lưu ảnh dưới dạng JPEG, giá trị gamma 1 / 2.2 được thêm vào, như một cách để nén thông tin thành 8 bit, và sau đó khi bạn xem hình ảnh trên màn hình có thêm gamma 2.2, tạo lại độ sáng tuyến tính.

Vì vậy, khi sử dụng họa tiết khuếch tán (như ảnh), bạn cần phải "loại bỏ" gamma 1 / 2.2 đó để biến nó thành tuyến tính (gọi là tuyến tính hóa) để bây giờ kết cấu trông tối hơn nhưng các giá trị này là chính xác từ quan điểm toán học để trình kết xuất sẽ tính toán chính xác. Lưu ý bên lề: phần mềm đã sử dụng gamma hiển thị 2.2 để đảm bảo họa tiết trông chính xác, chỉ để tính toán bên trong rằng chúng được tuyến tính hóa. Nhưng khi tôi tạo một bản đồ Bump trong Photoshop và lưu nó dưới dạng JPG hoặc PNG thì gamma 1 / 2.2 đó cũng bị đốt cháy trong hình ảnh đó, vậy tại sao bản đồ Bump này cũng cần phải được tuyến tính hóa?

Nếu tôi tải bản đồ Bump trong 3ds Max với gamma đầu vào là 2.2 giống như với kết cấu Diffuse, thì khuếch tán có vẻ đúng nhưng vết sưng có vẻ sai, vì vậy tôi phải đặt gamma đầu vào thành 1.0 cho vết sưng theo thứ tự để làm cho nó trông đúng, nhưng như tôi đã nói: tại sao, cả hai tệp hình ảnh đều có gamma 1 / 2.2 bị cháy, phải không?

Câu trả lời:


5

Thực tế là một bức ảnh được lưu trữ trong không gian gamma không liên quan đến PNG hay JPEG, nó phải liên quan đến thực tế đó là một bức ảnh.

Máy ảnh phát hiện cường độ 50% nhưng sẽ lưu ở mức 187 thay vì 127, vì sẽ hiệu quả hơn khi giữ thông tin màu quan trọng đối với mắt người khi bạn chỉ có 256 giá trị khác nhau. Và Photoshop cũng vậy nếu bạn nói như vậy.

Đối với bản đồ thông thường hoặc bản đồ dịch chuyển, bạn không có nhu cầu này nên không có lý do gì để sử dụng không gian gamma cho chúng (sử dụng gamma cho chúng thực sự sẽ là một sai lầm, vì nó sẽ ảnh hưởng đến độ chính xác được phân phối). Do đó, khi bạn giải mã một kết cấu bình thường hoặc một kết cấu dịch chuyển, bạn không cần phải áp dụng gamma.

Nếu bản đồ bình thường được mã hóa trong một không gian khác, chẳng hạn như trường hợp của Bộ đệm G chẳng hạn , thì bạn phải áp dụng hiệu chỉnh tương ứng.


Làm thế nào để bạn nói với Photoshop để lưu một hình ảnh với gamma được nướng trong như bạn đã nói ở trên: "Và Photoshop cũng vậy nếu bạn nói như vậy."
Kristoffer Helander

Điều này không giải thích "tại sao" cả. Nó chỉ nhắc lại "cái gì".
dùng1118321

@ user1118321: Tôi tin là có. Tôi đã thêm nhấn mạnh trong một nỗ lực để làm cho nó rõ ràng hơn.
Julien Guertault

Vâng, đúng nhưng nó vẫn không thực sự giải thích tại sao. Tôi thừa nhận tôi có cùng một vấn đề tôi chỉ đề cập đến việc thiếu lợi ích hoặc tác hại do nén như vậy. Không cần nhưng lý do tại sao dữ liệu của hình ảnh lại đặc biệt do cảm giác của con người trong khi lý luận không gian của chúng ta có bản chất tuyến tính hơn (theo như ứng dụng 3D)
joojaa

3

JPG, PNG hoặc bất kỳ định dạng hình ảnh 8 bit nào khác về bản chất không có 1 / 2.2 gamma liên quan đến nó. Họ chỉ lưu trữ các giá trị từ 0-255. Làm thế nào dữ liệu đó được diễn giải phụ thuộc vào phần mềm đọc và ghi các tệp đó. Một sự thật thú vị là hầu hết các phần mềm chỉnh sửa ảnh đều sử dụng không gian màu gamma theo mặc định. Tất cả các cọ vẽ, hiệu ứng, bộ lọc và thậm chí cả bộ chọn màu đều hoạt động trong không gian gamma. Chỉ cần nhìn vào các sắc thái của màu xám trên bộ chọn màu trong Photoshop. Họ không theo một phân phối tuyến tính.

Hậu quả là Photoshop không chuyển đổi giữa gamma và không gian màu tuyến tính khi mở hoặc lưu hình ảnh (theo mặc định), chỉ khi hiển thị nó. Điều đó có nghĩa là bạn có thể dễ dàng sử dụng nó để tạo hoặc chỉnh sửa dữ liệu tuyến tính như sơ đồ chiều cao khi bạn có thể chỉnh sửa ảnh. Bản đồ vết sưng trông không chính xác khi được tải với hiệu chỉnh gamma, vì nó không được lưu cùng với nó.


Dưới đây là một video YouTube cũng giải thích rằng giá trị được lưu trữ trong một hình ảnh là 1 / 2.2 (nhưng anh ta đơn giản hóa nó và chỉ nói rằng đó là căn bậc hai, có từ chối trách nhiệm trong văn bản.) Màu máy tính bị hỏng - Liên kết phút
Kristoffer Helander

@KristofferHelander Vâng, nhưng anh ấy nói rằng đó chỉ là máy ảnh lưu trữ các giá trị dưới dạng căn bậc hai và chỉ màn hình hiển thị bình phương trở lại. Phần mềm chỉnh sửa hình ảnh như Photoshop sau đó chỉ cần mở và lưu hình ảnh mà không có chuyển đổi, điều này dẫn đến các tạo tác được hiển thị trong video khi bạn cố gắng trộn màu.
Quinchilion

Sửa lỗi cho tôi nếu tôi sai về điều này. Khi tôi vẽ một đường dốc gradient trong Photoshop trông tuyến tính với tôi trên màn hình, các giá trị trong đoạn đường nối đó thực sự là tuyến tính. Nhưng Photoshop thêm gamma xem 1 / 2.2 vì màn hình thêm gamma 2.2, do đó, giá trị pixel của hình ảnh là tuyến tính và chúng cũng trông tuyến tính. Nhưng gamma 1 / 2.2 này chỉ là một gamma xem mà Photoshop sử dụng để hiển thị hình ảnh, nó không được đưa vào hình ảnh và do đó, không cần chỉnh sửa gamma cho hình ảnh trong phần mềm 3D, (sử dụng gamma 1.0) các giá trị đã là tuyến tính?
Kristoffer Helander

@KristofferHelander goo.gl/yqkeUP Độ dốc dưới cùng biểu thị độ sáng vật lý. Nếu Photoshop áp dụng gamma 1 / 2.2 để vẽ gradient hoặc hiển thị hình ảnh, bạn sẽ thấy gradient dưới cùng. Thay vào đó, bạn thấy cái trên cùng, trùng hợp ngẫu nhiên là tuyến tính, nhưng không phải. Nó cũng không hoạt động để xem ảnh. Máy ảnh áp dụng 1 / 2.2 khi lưu ảnh, sau đó Photoshop sẽ áp dụng 1 / 2.2 khác, nhưng màn hình chỉ thêm gamma 2.2 một lần. Điều đó sẽ không đúng.
Quinchilion

Nếu tôi điền một tài liệu bằng Photoshop một nửa màu đỏ (255,0,0) và nửa còn lại bằng màu xanh lá cây (0,255,0) và sau đó sử dụng hiệu ứng làm mờ Gaussian trên đó, gradient kết quả sẽ chuyển sang màu nâu thay vì màu vàng ở giữa như được hiển thị trong video đó tôi đã đăng. Tại sao vậy? Nếu các pixel trong ảnh là tuyến tính thì tại sao toán học lại bị sai lệch? Tôi không hiểu làm thế nào một bản đồ dịch chuyển được vẽ bằng Photoshop là tuyến tính và tốt để hiển thị nhưng đồng thời, việc làm mờ các pixel bị vấy bẩn với gamma sai và màu sắc trở nên tối và nâu?
Kristoffer Helander

3

Giới thiệu

Nó phụ thuộc vào cách bạn tạo bản đồ! Hãy xem xét những điều sau đây và để nó chìm vào một lúc trước khi bạn tiếp tục:

  1. Hình ảnh được hiển thị với hiệu chỉnh gamma vì lợi ích của mắt bạn
  2. Dữ liệu vẫn chỉ là dữ liệu. Hiệu chỉnh gamma dành cho phần hiển thị chứ không phải phần dữ liệu.

Bây giờ một bản đồ vết sưng khá khó vẽ bằng ứng dụng sơn. Bởi vì thật khó để nhìn thấy ngay cả khi bạn đã tuyến tính chính xác. Vì vậy, bạn cuối cùng sử dụng những thứ như nhìn vào các giá trị. Bây giờ đây là bắt:

  • Nếu bạn quyết định rằng 128 là một nửa trong cường độ của bạn thì đó là thực tế. Vì đó là những gì mã hóa của bạn vào luồng dữ liệu. Dữ liệu là những gì bạn diễn giải nó là do nó không có nghĩa là mắt người và màn hình. Ai quan tâm những gì màn hình hiển thị các giá trị như tất cả về cách bạn diễn giải dữ liệu chỉnh sửa nó.

Tạo bản đồ vết sưng / dịch chuyển

Ok, vì vậy bây giờ tôi đã mô tả rằng dữ liệu là để giải thích. Nhưng tại sao bạn sẽ giải thích dữ liệu là tuyến tính? Bởi vì sau đó bạn có thể thiết kế hồ sơ bên của bạn tốt hơn. Xem những gì bạn có thể làm là nghĩ về độ mờ 100% của bàn chải của bạn như chiều cao mục tiêu bạn muốn khắc hoặc lớp. Sau đó, bạn có thể sử dụng công cụ đường cong để thiết kế hình dạng của bút vẽ tem (vì bạn nghĩ dữ liệu là tuyến tính).

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

Hình 1 : Một con tem cốc hút.

Bây giờ nếu bạn làm một cái gì đó như thế này thì hình ảnh của bạn là tuyến tính bất chấp những gì mọi người nói với bạn. Bạn đã quyết định loại bỏ các quy tắc hình ảnh nói khác đi. Và đó là lý do tại sao hình ảnh là tuyến tính , tác giả chọn nó là tuyến tính để dễ dàng làm việc hơn.

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

Hình ảnh 2 : Cùng một hình ảnh bị dịch chuyển và giải thích tuyến tính (lưu ý tôi đã tăng tỷ lệ chiều cao một chút để phù hợp với kích thước bb mặc định của tôi), hoạt động như dự định.

Kỹ thuật tuyến tính là tốt hơn.

Một bản đồ tổng hợp không có lợi ích của việc nén các giá trị nhất định vào chi phí của người khác. Tuyến tính vốn đã tốt hơn bởi vì sự lan rộng của vết sưng của bạn là tốt hơn theo cách đó. Đó là lý do tại sao bạn đang lãng phí tài nguyên mã hóa nó theo cách sửa lỗi gamma.

Thứ hai, một hình ảnh không cần xác định không gian màu gì. Nó chỉ là các trình chỉnh sửa hình ảnh sẽ cho rằng nó được mã hóa sRGB. Bạn không có lý do để thực hiện giải thích tương tự, không có thông tin có nghĩa là: "Không ai bận tâm viết ra những gì họ đang nghĩ". Vì vậy, có lẽ điểm nên được thực hiện, bạn nên gắn thẻ tuyến tính. Nhưng đây là chà ... máy tính của bạn không có cấu hình tuyến tính dễ truy cập.

Photoshop và mờ thì sao?

Đây là nơi nó trở nên khó khăn. Photoshop cố gắng thực hiện khá nhiều công việc để đảm bảo rằng bạn không cần biết gì về công cụ này. Và đây là nơi bạn tự bắn vào chân mình. Se Photoshop không có nghĩa là để tạo kết cấu, nó có nghĩa là để chỉnh sửa hình ảnh không phải dữ liệu ngẫu nhiên. Vì vậy, vì độ mờ trên hình ảnh là tuyến tính khác nhau và phi tuyến, nó sẽ không hoạt động theo hướng dữ liệu sai.

Nhưng bạn có thể làm một trong 2 điều để khắc phục điều này:

  1. Vô hiệu hóa hiệu chỉnh gamma mờ
  2. đặt không gian làm việc của bạn thành một hồ sơ tuyến tính

Phần kết luận

Lý do bạn có một thời gian khó khăn với điều này là

  1. Bạn không biết người khác nghĩ gì, đơn giản là bạn không biết liệu họ có nên sửa gamma hay không.
  2. rằng bạn sử dụng một ứng dụng coi hình ảnh là hình ảnh

Điểm một là đặc biệt khó hiểu. Tôi chỉ biết rằng TẤT CẢ các bản đồ va chạm và dịch chuyển của tôi trên thực tế là tuyến tính. Nhưng tôi không thể biết bản đồ của bạn là gì. Các tỷ lệ là chúng tuyến tính vì gần như mọi người đều hiểu rằng dữ liệu là tuyến tính. Ngay cả những người không biết về gamma cũng có xu hướng thực hiện tuyến tính cho sự va chạm / dịch chuyển vì một số lý do (vì nó dễ dàng và đó là những gì bạn nghĩ rằng hình ảnh là cho đến khi ai đó nói với bạn khác).


Cảm ơn bạn đã đóng góp của bạn - wow! :) Tôi sẽ xem xét điều này khi tôi có nhiều thời gian rảnh rỗi hơn. Tôi sẽ lấy lại cho bạn, cảm ơn!
Kristoffer Helander 29/8/2016

Even people who do not know about gamma tend to do it linear for bump/displacement for some reasonCó khả năng vì những bản đồ được tạo ra.
Tara

3

Trên thực tế, nếu bản đồ vết sưng hoặc dịch chuyển của bạn được lưu với hiệu chỉnh 0,45 gamma đó, thì đó là sai. Những bản đồ này chứa thông tin hình học chứ không phải màu sắc, và như vậy, nên được mã hóa đơn giản.

Đối với một vấn đề liên quan và cách khắc phục cho Adobe Photoshop, hãy xem bản trình bày này: https://docs.google.com/presentation/d/1vS5nAAnXbZ8Pt6-dXxy-xEXDkjfjXTmNnthNGccorl0/edit#slide=id.g14b3e2860


Điều này đặc biệt đúng với một bản đồ bình thường mà bạn mong đợi độ dài vectơ là 1.
PaulHK
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.