📜  什么是 MATLAB 中的油画?

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

什么是 MATLAB 中的油画?

在这个信息化、智能化的时代,绘画图形似乎被严重边缘化,这也产生了现代社会如何更好地发展绘画技术。如今,在这一领域,随着技术的进步,数字图像处理在油画创作的扩展中扮演着重要的角色。油画是一种艺术。它是一种不仅美观而且实用的艺术。而今天,在这篇文章中,我们将讨论如何在 MATLAB 中进行油画创作。

在 MATLAB 中,油画属于图像处理的范畴。以下是将简单图像转换为油画所需遵循的一些步骤。

我们必须定义一个任意大小 mx n 的小窗口矩阵。然后将原始图像复制到窗口矩阵中。我们将找到每个值的直方图。然后我们必须用新的像素值替换窗口矩阵中出现的最大像素值。最后,我们必须将窗口矩阵复制到原始图像中。

方法:

读取图像:首先,读取输入图像并将其存储在名为img的变量中。 MATLAB 使用imread函数打开和读取图像并将其加载到变量中。在给定的示例中,我们将名为“image.jpg”的图像加载到变量“I”中。

I=imread('image.jpg');

然后我们必须定义一个任意大小的小窗口矩阵 mx n。然后将原始图像复制到窗口矩阵中。我们将找到每个值的直方图。然后我们必须用新的像素值替换窗口矩阵中出现的最大像素值。

显示图像:显示原始图像和修改后的图像。使用imshow ()函数将图像显示到 MATLAB 环境中。

imshow(I);

其中“i”是图像数组并显示图像。

例子:

Matlab
% MATLAB code for Oil Painting 
% reading the image
img = imread('GeeksforGeeks.jpg');
   
% defining the window matrix
m = 6;
n = 7;
wimg = uint8(zeros([size(img,1)-m,size(img,2)-n,3]));
  
% calculating the histogram for each RGB channel
for p = 1:3
for i = 1:size(img,1) - m
    for j = 1:size(img,2) - n
       mask = img(i:i+m-1,j:j+n-1,p);
       his = zeros(1,256);
       for k = 1:(m*n)
           his(mask(k)+1) = his(mask(k)+1) + 1;
       end
         
% maximum occuring pixel value
[max_val,max_index] = max(his);
  
% replacing the maximum occuring pixel value with the new pixel value
         wimg(i,j,p) = max_index - 1;
     end
    end
    end
  
% displaying image
figure,imshow(wimg);


输出:

图:原始图像

图:油画