Tôi đang phát triển một ứng dụng iOS, trong đó người dùng có thể thay đổi một phần của màu sắc của hình ảnh, nói một tách trà, bằng cách chạm vào nó. Tôi đang sử dụng thuật toán Floodfill để tô màu để người dùng phải chạm vào Chén Trà để thay đổi màu của nó. Đó là làm việc tốt. Nhưng, màu cuối cùng trông hơi khác so với màu thay thế. Tôi có một số vấn đề tìm ra một logic tốt hơn để chuyển đổi màu sắc của đối tượng (Tea Cup) thành màu đã chọn xem xét độ bão hòa của nó & nhẹ nhàng.Logic/thuật toán màu hình ảnh tốt hơn
Tôi đang sử dụng logic sau để có được màu kết quả. Tôi đại diện cho màu là (màu sắc, độ bão hòa, giá trị).
touchedColor = (tchd_h, tchd_s, tchd_v); // I am not using this now
pixelColor = (old_h, old_s, old_v);
replacementColor = (new_h, new_s, new_v);
resultColor = (new_h, new_s, old_v);
pixelColor = resultColor;
Cốc trước khi sơn (khoanh tròn bằng màu đỏ).
Các replacementColor chọn.
Cup sau khi sơn replacementColor (vòng tròn màu đỏ).
Xem hình ảnh cuối cùng ở trên. Như tôi chỉ cần thay đổi chỉ sắc & bão hòa, và không phải là giá trị của pixelColor, màu sắc ứng dụng không trông giống như chọn replacementColor. Độ sáng nhẹ của hình ảnh vẫn không bị thay đổi.
Nếu tôi thay đổi giá trị cùng với sắc & bão hòa như thế này,
resultColor = (new_h, new_s, new_v);
pixelColor = resultColor;
Sau đó, chiếc cốc trở nên bằng phẳng màu, thiếu đèn & màu như thế này,
Tôi muốn một số ý tưởng để tinh chỉnh logic trên để thay đổi màu pixel thành màu thay thế phù hợp. Có thể có một số công thức để lấy được độ bão hòa & giá trị.
Có thể cho chúng tôi thấy ví dụ về những gì bạn nghĩ là sai? Tôi không thể nhìn thấy một vấn đề với tiền đề cơ bản. –
@Mark Ransom, Có, tôi đã cập nhật câu hỏi của mình với hình ảnh. – EmptyStack