photoshop图像滤镜——浮雕算法(含matlab与C代码)
一、photoshop 图像滤镜——浮雕算法
浮雕的算法是对图像的每一个点进行卷积处理,采用的矩阵如下
[1 0 0;0 0 0;0 0 -1];
假设原图像为X,处理后的图像为Y ,也就是说,对于坐标为(i,j)
点,其浮雕效果图的算法为Y(i,j)=X(i-1,j-1)-X(i+1,j+1)+128。当然,
X,Y 的取值均在0~255 之间。
matlab 代码如下:
[plain] view plaincopy
1. img=imread('9.jpg');
2. size_info=size(img);
3. height=size_info(1);
4. width=size_info(2);
5. spec_img=zeros(height,width,3);
6. img_temp=rgb2gray(img);
7.
8. for i=2:height-1
9. for j=2:width-1
10. spec_img(i,j,:)=double(img(i-1,j-1,:))-double(img(i+1,j+1,:))+128;
11. end
12. end
13.
14. imshow(spec_img/255);
原图:
效果图:
相应的C 代码如下:
[plain] view plaincopy
1. void emboss(unsigned char r[1000][1000],unsigned char g[1000][1000],unsigned
char b[1000][1000],unsigned char output_r[1000][1000],unsigned char output_
g[1000][1000],unsigned char output_b[1000][1000],int height,int width)
2. {
3. int i,j;
4. //rgb 为输入图像的3 个通道,output r g b 为输出图像的通道
5. for(i=0;i
6. for(j=0;j
7. {
8. output_r[i][j]=128;
9. output_g[i][j]=128;
10. output_b[i][j]=128;
11. }
12.
13. for(i=1;i
14. for(j=1;j
15. {
16. output_r[i][j]=r[i-1][j-1]-r[i+1][j+1]+128;
17. output_g[i][j]=g[i-1][j-1]-g[i+1][j+1]+128;
18. output_b[i][j]=b[i-1][j-1]-b[i+1][j+1]+128;
19. }
20. }
欢迎各位朋友多多指教,欢迎分享,并且请您注明出处 (wsfdl)