Thu nhỏ sao và xử lý sao: sự tiến hóa của các phương pháp và cách thực hiện bằng PixelMath
Thu nhỏ sao ở mức hợp lý sẽ làm cho chủ thể của bức ảnh nổi bật hơn, nhất là ở những vùng sao dày đặc như vùng Dải Ngân Hà: nếu không xử lý, cả một bầu trời đầy sao sẽ lấn át tinh vân một cách nghiêm trọng. Bài này sắp xếp lại các phương pháp thu nhỏ sao, từ bộ lọc xói mòn (Erosion) thời đầu cho tới phương pháp dùng ảnh đã tách sao đang là chủ đạo hiện nay cùng cách thực hiện bằng PixelMath.
Cách làm thời đầu: thu nhỏ sao bằng xói mòn (Erosion)
Cách thu nhỏ sao sớm nhất dựa vào xói mòn (Erosion): trong Photoshop thì dùng bộ lọc “Minimum”, còn trong PixInsight thì dùng Erosion, để xói mòn các ngôi sao trong vùng chọn và làm sao nhỏ lại. Ai cầu kỳ hơn thì kết hợp thêm mặt nạ biên, tránh xói mòn vào tận lõi sao.
Thành thật mà nói, trước đây tôi ít khi thu nhỏ sao, vì Erosion truyền thống thường làm hỏng sao (chẳng hạn biến sao tròn thành hình thoi, hoặc phá hỏng sao kim cương). Nhưng với một số mục tiêu, ví dụ đại tinh vân Thuyền Để (Carina Nebula) nằm trong vùng Dải Ngân Hà, thì dù mặt nạ sao có làm khéo đến đâu, thành phẩm vẫn còn vô số sao gây nhiễu cho tinh vân, và lúc đó không thể không thu nhỏ sao. Cũng vì thế, tử huyệt lớn nhất của cách thu nhỏ sao bằng xói mòn là nó cực kỳ nhạy cảm với chất lượng mặt nạ: mặt nạ làm không tốt thì ở lõi sao và vùng quanh sao rất dễ sinh ra hiện tượng giả (artifact).

Bước ngoặt: thu nhỏ sao bằng ảnh đã tách sao
Sự tiến bộ của thời đại dần biến việc thu nhỏ sao thành công việc chỉ cần kéo một thanh trượt là xong, muốn thu nhỏ lớp sao cỡ nào cũng tùy chỉnh được. Mấu chốt nằm ở chỗ: mọi người bắt đầu dùng các công cụ tách sao (như StarNet++) để thu nhỏ sao, chứ không chỉ để loại bỏ sao. Đến năm 2021, sau khi mọi thứ được đưa vào script thì càng tiện hơn nữa, và bộ lọc “Minimum” của PS hay Erosion của PI đã không còn thịnh hành.
Trong PI đã xuất hiện script thu nhỏ sao dùng được ngay. Nó không dùng bộ lọc “Minimum” hay Erosion, mà đạt mục đích bằng cách kết hợp StarNet++ với Contour Mask.

Nhân đây tôi làm rõ một điểm dễ hiểu lầm: tùy chọn “Create star mask” trong StarNet++ thật ra tạo ra không phải mặt nạ, mà chính là những ngôi sao đã bị tách đi. Nếu bạn dùng PixelMath của PI hoặc layer của PS để cộng star_mask này trở lại ảnh đã tách sao, bạn sẽ thu được thứ gần như y hệt ảnh gốc chưa tách sao.

Sau khi thu nhỏ, các ngôi sao có to bằng nhau hết không
Đã có một người bạn cùng sở thích cho rằng sau khi thu nhỏ sao thì kích thước các ngôi sao đều trở nên như nhau. Thật sự có phải vậy không? Thực ra không phải — kích thước sao sau khi thu nhỏ chủ yếu phụ thuộc vào kích thước ban đầu của sao và mặt nạ thu nhỏ sao.
Trên thực tế, mỗi lần thu nhỏ sao bạn đều chọn loại sao muốn thu nhỏ (chủ yếu là sao cỡ nhỏ và vừa) rồi làm một mặt nạ thích hợp, khớp với kích thước sao; vì vậy sau khi thu nhỏ, kích thước các ngôi sao vẫn có thể khác nhau, chỉ là từ vùng quanh sao có thể nhận ra dấu vết của việc thu nhỏ. Lấy ảnh phóng to của SL 17 làm ví dụ: đó là kết quả của tổng cộng hai lần thu nhỏ sao (đến nay tôi chưa từng làm quá hai lần).




Thực hành thu nhỏ sao bằng PixelMath (trạng thái phi tuyến)
Việc thu nhỏ sao dựa trên ảnh đã tách sao có thể thực hiện chính xác trong PI bằng PixelMath. Các bước được phân tách như sau:
- Chuẩn bị sẵn tệp ảnh A, cùng với tệp ảnh đã tách sao B của A.
- Dùng STF kết hợp HistogramTransformation để đồng thời hạ độ sáng của A và B (dịch midtone sang phải).
- Đảo ảnh A và B sau khi đã hạ độ sáng (bàn phím Ctrl+I).
- Chia A đã đảo ảnh cho B đã đảo ảnh để thu được ảnh sao đảo C (PixelMath).
- Nhân C với ảnh đảo của B để thu được D, tức ảnh đảo của ảnh đã thu nhỏ sao (PixelMath).
- Đảo ảnh D để trở lại ảnh đã thu nhỏ sao bình thường (Ctrl+I).
Trong đó bước 5 và 6 thực chất chính là công thức của screen blending mode. Nếu muốn mức thu nhỏ mạnh hơn, ở bước 2 bạn có thể hạ độ sáng của A và B xuống thấp hơn nữa. Công thức minh họa như sau:
afterimage = ~((~mtf_low(beforeimage) / ~mtf_low(starless)) * ~starless)

Phương pháp tương tự cũng có thể tái hiện trong Photoshop hoặc Affinity Photo, khác biệt là ở đó công việc được hoàn thành bằng layer, và chế độ hòa trộn (blending mode) giữa các layer cũng hơi khác.

Mấu chốt: phải lấy sao ra cho đúng bằng “phép chia đảo ảnh”
Nhiều người xử lý ảnh theo hướng tách sao nhưng cuối cùng lại thất bại khi cộng sao trở lại; mấu chốt nằm ở chỗ các ngôi sao đã được lấy ra bằng cách nào.
Nếu chỉ đơn thuần trừ ảnh đã tách sao khỏi ảnh gốc để lấy sao, rồi cộng số sao đó trở lại, kết quả thường là các ngôi sao mờ nhạt, màu sắc không đúng, trông như thể bạn đã hạ opacity của layer. Nguyên nhân là một phần nội dung của sao còn sót lại trên ảnh đã tách sao, nên phép trừ không lấy được trọn vẹn các ngôi sao.
Cách tốt hơn là dùng phép chia đảo ảnh để lấy được trọn vẹn các ngôi sao; sau khi xử lý xong ảnh đã tách sao, hãy dùng phép nhân hoặc phép nhân đảo ảnh (screen blending mode) để đặt sao trở lại.

Tuyến tính và phi tuyến: công thức lấy ra và đặt lại khác nhau
Sau khi RC Astro cho ra mắt StarXTerminator (SXT), phạm vi áp dụng của việc tách sao đã mở rộng từ trạng thái phi tuyến sang cả trạng thái tuyến tính. Tuy vậy, ở trạng thái tuyến tính và phi tuyến, các bước cùng công thức để lấy sao ra và đặt sao lại vẫn hơi khác nhau, và điều này thường bị bỏ qua.
Trạng thái phi tuyến (ảnh đã trải qua kéo giãn mạnh, giữa các pixel không còn quan hệ tuyến tính ban đầu):
- Lấy sao ra: đánh dấu “Unscreen Stars” trong SXT, hoặc sau khi tách sao thì dùng công thức chia đảo ảnh
~(~Original_Nebula / ~Starless_Nebula)để lấy sao. - Đặt sao lại: trong PixelMath dùng công thức nhân đảo ảnh
~(~Nebula * ~stars), đây cũng chính là công thức toán học của Screen Blending.
Trạng thái tuyến tính (sau khi tích hợp (integration) xong và trước khi kéo giãn mạnh, giữa các pixel vẫn giữ quan hệ tuyến tính ban đầu):
- Lấy sao ra: không đánh dấu “Unscreen Stars” trong SXT.
- Đặt sao lại: trong PixelMath dùng công thức cộng
Nebula + stars.

Khi đã xác định rõ ảnh của bạn đang ở trạng thái nào và dùng đúng công thức tương ứng để lấy sao ra rồi đặt sao lại, bạn sẽ tránh được chuyện sao bị tối đi, đổi màu hay hỏng hẳn sau khi được đặt lại.