📜  如何使用 MATLAB 在灰度图像中执行随机伪着色?

📅  最后修改于: 2022-05-13 01:54:24.694000             🧑  作者: Mango

如何使用 MATLAB 在灰度图像中执行随机伪着色?

伪着色是图像处理中有吸引力的类别之一。它用于使旧的黑白图像或视频变得丰富多彩。伪着色技术用于分析识别样本图像的颜色表面和直方图黑白图像的自适应建模。在 R、G、B 层中选择不同的值是该技术最重要的成就,因此该方法基于对样本图像中直方图特征的分析,在彩色图像的不同层中分配不同的值,我们取行动。伪着色也称为处理数字图像中的着色主题。

在此技术中,应将无符号 8 位整数类型的灰度级(0 到 255 之间的数字)视为输入,并且对于三层彩色数字图像图必须实现三个输出,并且这三个级别中的每一个都应为无符号 8 位整数类型(0 到 255 之间的数字)。这种转换有很多技术,根据我们的需要有一些差异。

colour (x,y) = [R(x,y)                 G(x,y)                  B(x,y)]   So:gray(x,y) = [R(x,y)                 G(x,y)                  B(x,y)]

  • 灰度图像:它是黑白图像。像素值是灰色阴影,它是白色和黑色阴影的组合。图像以一个二维矩阵的形式表示。每个值表示图像中该坐标处相应像素的强度或亮度。灰度图像共有 256 种色调。 0 表示黑色,255 表示白色。当我们将值从 0 增加到 255 时,白色分量会增加,亮度也会增加。
  • RGB彩色图像:是彩色图像。它由三个称为通道的二维矩阵组成。红色、绿色和蓝色通道包含图像中每个像素的相应颜色值。在整数格式中,像素强度的范围从 0 到 255。0 表示黑色,255 表示原色的最高强度。每种颜色有 256 种色调。

脚步:

  • 读取灰度图像。
  • 如果它的位深度为 24,则设为 8。
  • 创建一个相同大小的空图像。
  • 为 RGB 通道分配一些随机权重。
  • 将灰度图像的加权乘积复制到红色、绿色和蓝色的每个通道。
  • 创建后显示图像。

使用的功能:

  • imread( ) 内置函数用于读取图像。
  • imtool( ) 内置函数用于显示图像。
  • rgb2gray( ) 内置函数用于将 RGB 转换为灰度图像。
  • uint8( ) 内置函数用于将双精度转换为整数格式。
  • pause( ) 内置函数用于停止执行指定的秒数。

例子:

Matlab
% MATLAB code for pseudo colouring
% of grayscale images.
% UTILITY CODE
k=imread("gfglogo.png");
gray2rgb(k);
imtool(grayscale,[]);
function gray2rgb(img)
  
% Convert into grayscale if not.
[x,y,z]=size(img);
if(z==3)
    grayscale=rgb2gray(img);
end
gray=double(grayscale./255);
rgb(:,:,1)=gray(:,:)*0.5;
rgb(:,:,2)=gray(:,:)*0.6;
rgb(:,:,3)=gray(:,:)*0.4;
imtool(rgb,[]);
  
c(x,y,z)=0;
colour=uint8(c);
colour(:,:,1)=grayscale(:,:)*0.5;
colour(:,:,2)=grayscale(:,:)*0.7;
colour(:,:,3)=grayscale(:,:)*0.4;
imtool(colour,[]);
  
pause(10);
imtool close all;
end


输出:

代码说明:

  • [x,y,z]=尺寸(img);此行获取输入图像的大小。
  • 灰色=双(灰度。/255);此行将输入图像转换为双精度格式。
  • rgb(:,:,1)=灰色(:,:)*0.5;这条线建立红色通道。
  • rgb(:,:,2)=灰色(:,:)*0.6;这条线路构建绿色通道。
  • rgb(:,:,3)=灰色(:,:)*0.4;这条线建立蓝色通道。
  • imtool(rgb,[]);此行显示构建普通 - RGB 图像。
  • c(x,y,z)=0;此行创建带有黑色像素的空图像。
  • 颜色=uint8(c);此行将图像转换为整数格式。
  • 颜色(:,:,1)=灰度(:,:)*0.5;此行填充红色通道。
  • 颜色(:,:,2)=灰度(:,:)*0.7;此行填充绿色通道。
  • 颜色(:,:,3)=灰度(:,:)*0.4;此行填充蓝色通道。
  • imtool(颜色,[]);该行显示形成的彩色图像。
  • 暂停(10);此行将执行暂停 10 秒。
  • k=imread(“madhubala.png”);此行读取输入图像。
  • gray2rgb(k);此行通过将输入图像作为参数传递来调用实用程序函数。