【matlab图像处理】图片生成油画效果(选择路径-交互)

%油画效果
function [I_painted]=OilPaint(I_rgb, radius, intensity_level)
[filename pathname]=uigetfile({'*.jpg';'*.bmp';'*.*'},'读入文件');
pathfile=[pathname filename];
handles.pic=imread(pathfile);
intensity_level = 180;
radius = 5;
s1=size(handles.pic);
width=s1(1);
height=s1(2); 
I_painted=uint8(zeros(width,height));
I=rgb2gray(handles.pic);
% down-sampling the intensity image
I= floor(I* (intensity_level/255));
tic
for x = 1:width
    for y = 1:height
        clear intensity_counter RGB max_instance index
        intensity_counter=uint8(zeros(1,intensity_level+1));
        R=uint8(zeros(1,intensity_level+1));
        G=uint8(zeros(1,intensity_level+1));
        B=uint8(zeros(1,intensity_level+1));
        for i = (x-radius):(x+radius)
            for j = (y-radius):(y+radius)
                if i>0 && i<=width && j>0 && j<=height 
                    intensity = I(i,j)+1;
                    intensity_counter(intensity)=intensity_counter(intensity)+1;
                    R(intensity) = handles.pic(i,j,1);
                    G(intensity) = handles.pic(i,j,2);
                    B(intensity) = handles.pic(i,j,3);
                end
            end
        end
        % finding the maximum occuring intensity in downsampled image
        [max_instance index] = max(intensity_counter);
        I_painted(x, y, 1)= R(index);
        I_painted(x, y, 2)= G(index);
        I_painted(x, y, 3)= B(index);
    end
end
toc 
figure
imshow(I_painted,[]);
title('油画效果');



  • 2
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值