我有一张灰度照片,我正在尝试以编程方式进行着色,以便它看起来真实,并且用户输入'绘画'颜色(例如红色)。感觉它应该很简单,但是我一直在尝试一些看起来不正确的方法,所以我想我会问社区,以防我错过了一些明显的东西。我尝试了以下
答案 0 :(得分:0)
要添加用户Alexander Reynolds的评论,您提出的问题是计算机图形领域中一个已知的开放研究问题,因为如果不使用某种统计先验,问题就会受到限制。 CG社区的最新技术现已在SIGGRAPH 2016上展示。
答案 1 :(得分:0)
我有另一个想法和玩photoshop,并在BGR空间上实现了一个多重混合模式,以获得一个好的结果。 在java中实现
Mat multiplyBlend(Mat values, Mat colours) {//values 1 channel, colours 3 //simulates BGR Multiply blend mode ArrayList<Mat> splitColours = new ArrayList<Mat>(); Core.split(colours, splitColours); Core.multiply(values, splitColours.get(0), splitColours.get(0), 1/255.0f); Core.multiply(values, splitColours.get(1), splitColours.get(1), 1/255.0f); Core.multiply(values, splitColours.get(2), splitColours.get(2), 1/255.0f); Mat ret = new Mat(); Core.merge(splitColours, ret); return ret; }