sinat_22822467 2015-07-22 14:09 采纳率: 16.7%
浏览 13339
已采纳

已知一副彩色图像,求出RGB三通道的灰度值,在对其做变换后,怎么将RGB三通道恢复为彩色图像

求大神帮忙,已知一副彩色图像,先求出RGB各灰度值,然后各灰度值各加一定的数值,怎么合成一副彩色图像。
如果有matlab其它方法可以实现将一副彩色图像的各灰度值加一定的数值,再合成一副图像也可以。

 clear;
clc;
f=imread('fruit.jpg');
[m,n,p]=size(f);   %对于二维数组来说,它的size是指它的行数和列数;三维数组是指它的各个维的维度,可以理解为m行,n列和p层,即一共有m*n*p个元素
a=zeros(1,256);  %a为一个1行,256列的全0矩阵
b=zeros(1,256);
c=zeros(1,256);

for i=1:m     %从行开始 
    for j=1:n  %每一行的列
        a(f(i,j,1)+1)=a(f(i,j,1)+1)+1;  %f(i,j,1)是红色通道的值,这个值有0-255的取值,a数组正好是容量256的数组,数组的下标范围是1开始的,所以要加1
    end
end
for i=1:m
    for j=1:n
        b(f(i,j,2)+1)=b(f(i,j,2)+1)+1;%G通道
    end
end

for i=1:m
    for j=1:n
        c(f(i,j,3)+1)=c(f(i,j,3)+1)+1;%B通道
    end
end
%各灰度分量加20;
for k=1:256
    a(k)=a(k)+20;
    b(k)=b(k)+20;
    c(k)=c(k)+20;
end

怎么合成?

  • 写回答

5条回答 默认 最新

  • mylmuseum 2015-07-24 06:55
    关注

    f=imread('fruit.jpg');如果你读入的图像就是三个通道的,那个f(:,:,1)、f(:,:,2)、f(:,:,3)就是三个通道的数据啊,f(:,:,1)=f(:,:,1)+10,就可以了。
    这样f就是彩色图片,不知道是不是你要的回答?很多时候,灰度值需要限幅的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决