失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab实现伪彩色处理:灰度图像转换为彩色图像

Matlab实现伪彩色处理:灰度图像转换为彩色图像

时间:2024-07-02 15:18:12

相关推荐

Matlab实现伪彩色处理:灰度图像转换为彩色图像

灰度图像可以简单理解为一个灰度值矩阵,其中灰度值的取值范围是[0, 255],且灰度值为整数。

现在需要将这个灰度值矩阵中的每一个值拆分成3个通道(RGB),分别是红色通道(red, R)、绿色通道(green, G)和蓝色通道(blue, B)。这里就需要自己定义一个映射函数,比如我规定灰度值小于128的点,它们对应的红色通道的值为30,就可以写作

这里的R是红色通道矩阵,X是灰度值矩阵。

一般地,给出一个任意的映射函数如下

则其对应的matlab的转换函数如下

%% 红色通道映射函数function R = redTransformer(X)R = zeros(size(X));R(X < 128) = 30;R(128 <= X & X < 192) = 2*X(128 <= X & X < 192)-150;R(192 <= X) = 234;end

这里的转换函数使用了索引矩阵来简化代码,提高效率,对matlab索引不熟悉的小伙伴可以参考我的这篇博客

matlab核心知识点-索引index运用_ 一只博客-CSDN博客/qq_42276781/article/details/121715378为了方便理解,这里给出一个一般写法的转换函数

%% 红色通道映射函数,一般写法,不推荐function R = redTransformer(X)[row, col] = size(X);R = zeros(row, col);for i = 1: rowfor j = 1: colif X(i,j) < 128R(i,j) = 30;elseif X(i,j) < 192R(i,j) = 2*X(i,j)-150;elseR(i,j) = 234;end endendend

类似地,给出三个通道的函数表达式和matlab代码

matlab中的函数可以嵌套,于是我将RGB三色的映射函数均放置在gray2rgb.m文件中。

gray2rgb.m

%% 灰度图转换为彩色图function I = gray2rgb(X)R = redTransformer(X);G = greenTransformer(X);B = blueTransformer(X);I(:,:,1) = R;I(:,:,2) = G;I(:,:,3) = B;I = uint8(I);end%% 红色通道映射函数function R = redTransformer(X)R = zeros(size(X));R(X < 128) = 30;R(128 <= X & X < 192) = 2*X(128 <= X & X < 192)-150;R(192 <= X) = 234;end%% 绿色通道映射函数function G = greenTransformer(X)G = zeros(size(X));G(X < 90) = 2*X(X < 90)+40;G(90 <= X & X < 160) = 180;G(160 <= X) = 0;end%% 蓝色通道映射函数function B = blueTransformer(X)B = zeros(size(X));B(X < 64) = 115;B(64 <= X & X < 128) = 510-4*X(64 <= X & X < 128);B(128 <= X) = 36;end

主函数

clear, close all% 辣椒彩色图im_rgb = imread('peppers.png');subplot(1,3,1), imshow(im_rgb)% 彩色图转灰度图im_gray = rgb2gray(im_rgb);subplot(1,3,2), imshow(im_gray)% 灰度图转彩色图im_gray2rgb = gray2rgb(im_gray);subplot(1,3,3), imshow(im_gray2rgb)

运行结果

代码获取

关注公众号,回复“数字图像处理”即可获得代码

如果觉得《Matlab实现伪彩色处理:灰度图像转换为彩色图像》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。