c/c++程序编程题【小白勿扰】 19

数码相片的像素通常用三个0到255之间的整数表示,分别指示三种色彩--红、绿、蓝的强度。为了创造艺术效果,许多相片编辑工具含有如下所述的分离调色功能。这三个色彩通道需要分... 数码相片的像素通常用三个0到255之间的整数表示,分别指示三种色彩--红、绿、蓝的强度。为了创造艺术效果,许多相片编辑工具含有如下所述的分离调色功能。
这三个色彩通道需要分别检验,但此处仅关注红色通道。我们仅用0到255之间的k个数,因此每个像素的红色强度就用这k个数当中最接近的近似表示。相片编辑工具就选择这样一组近似值使得所有像素上误差的平方和最小。如果相片上有n个像素且红色强度分别为r1,r2,…,rn,另设允许的k个值为v1, v2,…,vk, 则误差的平方和为 .
任务是:给定描述相片所有像素的红色强度以及参数k,选择0到255之间的k个数使得上式的误差平方和最小。
程序的输入:原相片中不同的红色强度值的个数d(1<=d<=255), 调色参数k(1<=k<=d),以及原相片中各个红色强度r对应的像素个数p,其中 0<=r<=255, 1<=p<=226。
程序的输出:对于一组最优的允许值v1 , v2 ,…,vk ,输出误差平方和。
展开
 我来答
天蝎苍狼999
2018-01-23
知道答主
回答量:44
采纳率:35%
帮助的人:4.2万
展开全部
正常情况下只需要等分255就好了
比如k =10 那么就取值 0,25,50,......250.
因为照片受光照影响比较大,所以一般采取均衡化直方图的方式。
比例系数就按均衡直方图的方式获取就可以,这样得到的误差平方和是最小的。
只需要写一个递归算法就好了
思路是这样的:假设k =3.
第一步求所有点的平均值,假设平均值为100,则选取一个数字100.
第二步求0~100所有点的平均值,假设为80,则选取另一个数值 80,
第三步求100~255所有点数的平均值,假设为200,则选取第三个值200.
这样三个值就求出来了。我不知道你是何种语言编程代码就不提供了。
关于图像的相关处理切记滤波。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式