什么是 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);
输出: