700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数字图像处理特效中彩色墨水效果的设计与实现

数字图像处理特效中彩色墨水效果的设计与实现

时间:2022-09-06 02:52:38

相关推荐

数字图像处理特效中彩色墨水效果的设计与实现

先来看两张对比图,首先是原图。

下面是处理后的效果,其实下图看起来已经不再像是一张拍摄的照片了,更像是手工绘制的。

其实除了对于边缘的描绘外,显然对色彩也需要进行适当处理。

应该还可以有改进的空间,但是毕竟算法的实现方式非常的简单,而且毕竟体现了处理此类问题所应该考虑的基本思想。

下面是我基于MAGICHOUSE平台用C++实现的代码。

函数调用部分

SeaFun::InkSketch(our_image_buffer,temp_imageBuffer,X_image,Y_image);

for(int n=0; n<sum; n+=4)

{

temp_imageBuffer[n] = temp_imageBuffer[n]>0 ? our_image_buffer[n]:temp_imageBuffer[n];

temp_imageBuffer[n+1] = temp_imageBuffer[n+1]>0 ? our_image_buffer[n+1]:temp_imageBuffer[n+1];

temp_imageBuffer[n+2] = temp_imageBuffer[n+2]>0 ? our_image_buffer[n+2]:temp_imageBuffer[n+2];

}

实现部分

static void InkSketch(BYTE* image0, BYTE* image1, unsigned int w, unsigned int h)

{

BYTE** imageBuf0 = CreatImage(image0, w, h);

BYTE** imageBuf1 = CreatImage(image1, w, h);

double scale=2;

int templt[25]={

-1, -1, -1, -1, -1,

-1, -1, -1, -1, -1,

-1, -1, 30, -1, -1,

-1, -1, -1, -1, -1,

-1, -1, -5, -1, -1

};

int x,y;

int a;

for(y=2; y<h-2; y++)

for(x=2; x<w-2; x++)

{

a=TempltExcute(imageBuf0,w,h,templt,5,x,y);

a*= scale;

a = a>255?255:a;

a = a<0?0:a;

SetPixel2(imageBuf1,x,y,a);

}

free(imageBuf0);

free(imageBuf1);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。