这个算法原理很简单,对彩色图像的R,G,B 三个通道,分别求梯度,然后将梯度值作为三个通道的值。

clc;

clear all;

Image=imread('4.jpg');
Image=double(Image);

R=Image(:,:,1);
G=Image(:,:,2);
B=Image(:,:,3);

R_Gradient=Find_Gradient(R);
G_Gradient=Find_Gradient(G);
B_Gradient=Find_Gradient(B);

Image_new(:,:,1)=R_Gradient;
Image_new(:,:,2)=G_Gradient;
Image_new(:,:,3)=B_Gradient;

imshow(Image_new/255);


function  I_Gradient=Find_Gradient(I)

p=3;
q=0;
Gradient_Y=[-1 -p -1
            0   q  0
            1   p  1];


Gradient_X=[-1 0 1
            -p q p
            -1 0 1];


Image_y=imfilter(I, Gradient_Y, 'conv');        
Image_x=imfilter(I, Gradient_X, 'conv');

alpha=0.5;
I_edge=abs(Image_x)*alpha+abs(Image_y)*(1-alpha);
I_Gradient=I_edge;


原图:



效果图:


posted on 2014-07-09 19:16  未雨愁眸  阅读(1131)  评论(0编辑  收藏  举报