数字媒体技术作业题代码:matlab将三个灰度图片转化成一个彩色图片

以下分两种情况讨论:

1、我们能够找到分辨率合适的灰度图片(原题图片在PPT中,PPT直接导出图片分辨率较低,我的PPT版本太低了,不做演示,网上有很多教程),直接导出灰度图片并用以下代码:

clear;clc;%%清空工作区
img(:,:,1)=imread('r.png');%%imread('address')导入图片,此处导入红色通道的亮度矩阵
img(:,:,2)=imread('g.png');
img(:,:,3)=imread('b.png');
imwrite(img,'rgb.png');%%imwrite(img,'address') 导出图片

每张灰度图片通过imread存储可以变成二维矩阵,矩阵中的数字代表每个像素点的亮度。而彩色图片由于是多通道的,相当于一个三维矩阵,我们只需要一个个通道逐一赋值即可。

代码段中“:”表示全选。

2、我们无法得到分辨率合适的灰度图片(比如我)。我们可以先创建一个word文档,再将PPT中的图片直接拖拽到word文档中,对word文档进行另存为,选择网页模式,就会生成一个files文件夹,每个图片都会对应在文件夹中生成两个图片文件,找较大的那个即为分辨率高的。

但是我们通过这种方式生成的图片就不是灰度图片了,是“彩色”图片,他们有三个通道,但是三个通道的值都一样,显示的效果等同于灰度图片,那么我们可以修改代码如下:

clear;clc;%%清空工作区
imgr=imread('r.png');
imgg=imread('g.png');
imgb=imread('b.png');
img(:,:,1)=imgr(:,:,1);
img(:,:,2)=imgg(:,:,2);
img(:,:,3)=imgb(:,:,3);
imwrite(img,'rgb.png')

图上的imgr、imgg、imgb的第三维度的值是1、2、3均可,因为他们三个维度的值都一样

猜你喜欢

转载自blog.csdn.net/qq_51135645/article/details/123121118