Matlab图像处理——图片的光影效果

现在,越来越多的人喜欢用手机拍照,记录自己或旅行中的美好瞬间。在拍摄照片时,我们总希望能够拍出鲜明、生动的照片,而一些特殊的效果,如光影效果在照片中的呈现,更是能够让照片更加生动、有趣。而本文将通过Matlab实现一种图片光影效果,让照片更具艺术感。首先我们获取到原图片:

f832b5ad64a49ca1074f1a796f0e7620.jpeg

然后用下面六个步骤进行处理:

(1) 区域平滑:使用均值滤波器或高斯滤波器对图像进行平滑处理,使得图像变得更加平滑。使用了高斯滤波器(imgaussfilt),sigma参数为3,表示卷积核的大小为3×3。

(2) 边缘检测:使用Canny算法边缘检测算法,检测出图像中的边缘。然后将边缘像素从原图中减去,以突出边缘线条。

(3)饱和度提升:使用HSV颜色空间对图像进行调整,增加饱和度来让图像更加鲜艳明亮。使用了rgb2hsv和hsv2rgb函数将RGB颜色空间转换为HSV颜色空间,然后将饱和度(hsv_img(:, :, 2))乘以1.5,最后再转换回RGB颜色空间。

(4) 色调分离:使用K-means聚类算法将图像中的颜色分成几个不同的色调。其中使用了K-means聚类算法(kmeans),将每个像素点看成三维向量(RGB),最后将聚类结果用调色板映射回RGB颜色空间。

(5) 手绘风格化:使用卷积核对每一个像素点进行风格化处理。使用了卷积核(imfilter),将像素点进行滤波处理,使其具有类似手绘的效果。

(6) 添加光影效:使用卷积核和混合模式对图像进行处理,增加图像的立体感和逼真度。其中,highlight_filter表示高光卷积核,将其与原图进行卷积处理,得到高光效果。然后使用imfuse函数对原图和高光图像进行混合(blend)处理,使得图像具有立体感和逼真度。

e9dd2456b9e7ed78945db040346f4de6.png

完整源代码如下:

clear
clc
img = imread('R-C.jpg');
figure
imshow(img)
%% 区域平滑
smooth_img = imgaussfilt(img, 3);%使用了高斯滤波器,卷积核的大小为3×3
figure;
imshow(smooth_img)
%% Canny算法
edges = edge(rgb2gray(smooth_img), 'Canny');
enhanced_img = img - uint8(255 * edges); %将边缘像素从原图中减去
figure;
imshow(enhanced_img)
%%  饱和度提升
hsv_img = rgb2hsv(enhanced_img);
hsv_img(:, :, 2) = hsv_img(:, :, 2) * 1.5;
enhanced_img = uint8(255 * hsv2rgb(hsv_img));
figure;
imshow(enhanced_img)
%% 色调分离
pixel_list = reshape(enhanced_img, [], 3);
color_num = 5; % 设置要分的色调数
[cluster_idx, ~] = kmeans(double(pixel_list), color_num);
palette = uint8(rand(color_num, 3) * 255); % 随机生成调色板
quantized_img = reshape(palette(cluster_idx, :), size(enhanced_img));
figure;
imshow(quantized_img)
%% 手绘风格化
sketch_filter = [-1, -1, -1; -1, 9, -1; -1, -1, -1];
sketch_img = imfilter(quantized_img, sketch_filter); %使用卷积核对每一个像素点进行风格化处理
figure;
imshow(sketch_img)
%% 添加光影效果
highlight_filter = [1, 1, 1; 1, 0.7, 1; 1, 1, 1];
highlight_img = imfilter(enhanced_img, highlight_filter);
blend_img = imfuse(enhanced_img, highlight_img, 'blend', 'Scaling', 'joint');
figure
imshow(blend_img)

通过Matlab实现图片光影效果,为我们的照片增添了新的色彩和艺术感。虽然光影效果的实现原理较为简单,但是在实际操作中,我们需要灵活运用Matlab的函数和参数,才能得到更好的效果。希望本文可以帮助到读者,让您的照片更具艺术感。

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

c4c59db699a544b395b62a5583353dbc.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值