matlab怎么通过RGB三个通道的值还原彩图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么通过RGB三个通道的值还原彩图相关的知识,希望对你有一定的参考价值。

参考技术A

1、首先打开matlab读取一张图。


2、读完之后p的矩阵形式构成为:q(a1,a2,a3)a1:为行像素,a2:为列像素,a3为R/G/B通道。

3、通过lenght函数计算出p矩阵的行和列像素量。q1=length(q(:,1,1));q2=length(q(1,:,1))。

4、使用meshgrid函数生成网格矩阵,代码如下:x=q1:-1:1;y=1:q2;[X,Y]=meshgrid(x,y);

5、绘制三维坐标图,代码如下:plot3(X,Y,q(:,:,1),'k'),你可通过旋转查看该图像。

6、最后点击转换即可完成还原彩图。

matlab图片灰度模式转rgb模式,不需要还原彩色~

不需要还原彩色,只需要把double形式的转换为[:,:,3]的uint8形式,要保持rgb模式与灰度图一致~

参考技术A 直接把灰度值赋给RGB三个通道就可以了
g=imread('D:\1.bmp');%1.bmp是灰度图
f=repmat(g,[1,1,3]);%f就是你所要的
imshow(f)
参考技术B 楼上正解追问

f得到的是double类型的,怎么变成uint8?

追答

强制类型转换f = (uint8)f;就可以把其他类型数据转换为uint8

追问

强制类型转换后得到的是一片黑~~

追答

imshow(f,[]) 用这一条命令试试

追问

虽然还是不对,但还是要谢谢你~~

本回答被提问者采纳

以上是关于matlab怎么通过RGB三个通道的值还原彩图的主要内容,如果未能解决你的问题,请参考以下文章

labview怎么提取一幅图像rgb值,最后生成三个矩阵,每个矩阵里分别存放R,G,B的值

matlab中imagesc函数得到图像,怎么还原?

图像还原基于matlab图像数据还原含Matlab源码 1175期

OPENCV求取一副图片RGB三通道均值

matlab 如何将彩图转成灰度图

OpenCV——RGB三通道分离