您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > matlab实现油画-浮雕-伪色彩-底片-单线条效果程序.
图像特殊效果处理程序李志鹏09自动化200992140116此程序使用matlab制作,能对图像进行浮雕、底片、伪色彩、油画、单线条等特殊效果的处理。通过此程序可以进一步的掌握用matlab来处理有关图像的问题。以下是各种效果的具体介绍。浮雕效果%改为灰度图像f0=rgb2gray(handles.pic);%加入高斯噪声f1=imnoise(f0,‘speckle’,0.01);%加入密度0.01的高斯乘性噪声f1=im2double(f1);%给定均值滤波窗口h3=1/9.*[111;111;111];%采用H3对F2进行卷积滤波f4=conv2(f1,h3,'same');%进行sobel滤波h2=fspecial('sobel');g3=filter2(h2,f1,'same');K=mat2gray(g3);figure(5),imshow(K);title(‘浮雕效果');底片效果我们所见到各种色彩都是由红、绿、蓝3种颜色按区别比例混合而成这就是我们所说3基色它们颜色值(RGB值)是0~255所以我们只需去图像上各个点RGB值然后用255减去这个值并将这个值重新赋值给各个点就会达到我们想要底片效果了。y=255-handles.pic;%转化为反色图像figure,imshow(y);title(‘底片效果’);%显示反色图像伪色彩效果所谓伪色彩处理,就是将图像中的灰度级经由线性或非线性变换成不同的彩色。handles.pic=rgb2gray(handles.pic);%读入源图像[M,N]=size(handles.pic);%读取图像的大小fori=1:M;forj=1:N;ifhandles.pic(i,j)32%转化为蓝色B(i,j,:,:,:)=[0,0,1];elseifhandles.pic(i,j)64%转化为绿色B(i,j,:,:,:)=[0,1,0];elseifhandles.pic(i,j)96%转化为淡蓝色B(i,j,:,:,:)=[0.4,0.9,1];elseifhandles.pic(i,j)128%转化为紫色B(i,j,:,:,:)=[1,0,1];elseifhandles.pic(i,j)160%转化为红色B(i,j,:,:,:)=[1,0,0];elseifhandles.pic(i,j)192%转化为橙色B(i,j,:,:,:)=[1,0.8,0];elseifhandles.pic(i,j)224%转化为黄色B(i,j,:,:,:)=[1,1,0];elseifhandles.pic(i,j)255%转化为淡黄色B(i,j,:,:,:)=[1,0.8,0];endendendfigure,imshow(B);title(‘伪色彩效果');油画效果function[I_painted]=OilPaint(I_rgb,radius,intensity_level)[filenamepathname]=uigetfile({‘*.jpg’;‘*.bmp’;‘*.*’},‘读入文件');pathfile=[pathnamefilename];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-samplingtheintensityimageI=floor(I*(intensity_level/255));ticforx=1:widthfory=1:heightclearintensity_counterRGBmax_instanceindexintensity_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));fori=(x-radius):(x+radius)forj=(y-radius):(y+radius)ifi0&&i=width&&j0&&j=heightintensity=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);endendend%findingthemaximumoccuringintensityindownsampledimage[max_instanceindex]=max(intensity_counter);I_painted(x,y,1)=R(index);I_painted(x,y,2)=G(index);I_painted(x,y,3)=B(index);endendtocfigureimshow(I_painted,[]);title(‘油画效果');单线条效果handles.pic=rgb2gray(handles.pic);bw=edge(handles.pic,‘canny’);%数字图像轮廓提取se=strel(‘line’,3,0);%创建直线长度3角度为0形态学元素bwd=imdilate(bw,se);%对图像实施膨胀操作figure,imshow(bwd);title(‘单线条效果');谢谢观看
本文标题:matlab实现油画-浮雕-伪色彩-底片-单线条效果程序.
链接地址:https://www.777doc.com/doc-5444727 .html