C#图像处理.doc_第1页
C#图像处理.doc_第2页
C#图像处理.doc_第3页
C#图像处理.doc_第4页
C#图像处理.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#图像处理一.底片效果原理:GetPixel方法获得每一点像素的值,然后再使用SetPixel方法将取反后的颜色值设置到对应的点.效果图:代码实现:底片效果privatevoidbutton1_Click(objectsender,EventArgse)/以底片效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;Bitmapnewbitmap=newBitmap(Width,Height);Bitmapoldbitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;for(intx=1;xWidth;x+)for(inty=1;yHeight;y+)intr,g,b;pixel=oldbitmap.GetPixel(x,y);r=255-pixel.R;g=255-pixel.G;b=255-pixel.B;newbitmap.SetPixel(x,y,Color.FromArgb(r,g,b);this.pictureBox1.Image=newbitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示,MessageBoxButtons.OK,MessageBoxIcon.Information);二.浮雕效果原理:对图像像素点的像素值分别与相邻像素点的像素值相减后加上128,然后将其作为新的像素点的值.效果图:代码实现:浮雕效果privatevoidbutton1_Click(objectsender,EventArgse)/以浮雕效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;BitmapnewBitmap=newBitmap(Width,Height);BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel1,pixel2;for(intx=0;xWidth-1;x+)for(inty=0;y255)r=255;if(r255)g=255;if(g255)b=255;if(b0)b=0;newBitmap.SetPixel(x,y,Color.FromArgb(r,g,b);this.pictureBox1.Image=newBitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示,MessageBoxButtons.OK,MessageBoxIcon.Information);三.黑白效果原理:彩色图像处理成黑白效果通常有3种算法;(1).最大值法:使每个像素点的R,G,B值等于原像素点的RGB(颜色值)中最大的一个;(2).平均值法:使用每个像素点的R,G,B值等于原像素点的RGB值的平均值;(3).加权平均值法:对每个像素点的R,G,B值进行加权-自认为第三种方法做出来的黑白效果图像最真实.效果图:代码实现:黑白效果privatevoidbutton1_Click(objectsender,EventArgse)/以黑白效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;BitmapnewBitmap=newBitmap(Width,Height);BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;for(intx=0;xWidth;x+)for(inty=0;yg?r:g;Result=Resultb?Result:b;break;case2:/加权平均值法Result=(int)(0.7*r)+(int)(0.2*g)+(int)(0.1*b);break;newBitmap.SetPixel(x,y,Color.FromArgb(Result,Result,Result);this.pictureBox1.Image=newBitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);四.柔化效果原理:当前像素点与周围像素点的颜色差距较大时取其平均值.效果图:代码实现:柔化效果privatevoidbutton1_Click(objectsender,EventArgse)/以柔化效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;Bitmapbitmap=newBitmap(Width,Height);BitmapMyBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;/高斯模板intGauss=1,2,1,2,4,2,1,2,1;for(intx=1;xWidth-1;x+)for(inty=1;yHeight-1;y+)intr=0,g=0,b=0;intIndex=0;for(intcol=-1;col=1;col+)for(introw=-1;row255?255:r;r=r255?255:g;g=g255?255:b;b=b0?0:b;bitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b);this.pictureBox1.Image=bitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);五.锐化效果原理:突出显示颜色值大(即形成形体边缘)的像素点.效果图:实现代码:锐化效果privatevoidbutton1_Click(objectsender,EventArgse)/以锐化效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;BitmapnewBitmap=newBitmap(Width,Height);BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;/拉普拉斯模板intLaplacian=-1,-1,-1,-1,9,-1,-1,-1,-1;for(intx=1;xWidth-1;x+)for(inty=1;yHeight-1;y+)intr=0,g=0,b=0;intIndex=0;for(intcol=-1;col=1;col+)for(introw=-1;row255?255:r;r=r255?255:g;g=g255?255:b;b=b0?0:b;newBitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b);this.pictureBox1.Image=newBitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);六.雾化效果原理:在图像中引入一定的随机值,打乱图像中的像素值效果图:实现代码:雾化效果privatevoidbutton1_Click(objectsender,EventArgse)/以雾化效果显示图像tryintHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;BitmapnewBitmap=newBitmap(Width,Height);BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;for(intx=1;xWidth-1;x+)for(inty=1;y=Width)dx=Width-1;if(dy=Height)dy=Height-1;pixel=oldBitmap.GetPixel(dx,dy);newBitmap.SetPixel(x,y,pixel);this.pictureBox1.Image=newBitmap;catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);七.光照效果原理:对图像中的某一范围内的像素的亮度分别进行处理.效果图:实现代码:光照效果privatevoidbutton1_Click(objectsender,EventArgse)/以光照效果显示图像GraphicsMyGraphics=this.pictureBox1.CreateGraphics();MyGraphics.Clear(Color.White);BitmapMyBmp=newBitmap(this.pictureBox1.Image,this.pictureBox1.Width,this.pictureBox1.Height);intMyWidth=MyBmp.Width;intMyHeight=MyBmp.Height;BitmapMyImage=MyBmp.Clone(newRectangleF(0,0,MyWidth,MyHeight),System.Drawing.Imaging.PixelFormat.DontCare);intA=Width/2;intB=Height/2;/MyCenter图片中心点,发亮此值会让强光中心发生偏移PointMyCenter=newPoint(MyWidth/2,MyHeight/2);/R强光照射面的半径,即”光晕”intR=Math.Min(MyWidth/2,MyHeight/2);for(inti=MyWidth-1;i=1;i-)for(intj=MyHeight-1;j=1;j-)floatMyLength=(float)Math.Sqrt(Math.Pow(i-MyCenter.X),2)+Math.Pow(j-MyCenter.Y),2);/如果像素位于”光晕”之内if(MyLengthR)ColorMyColor=MyImage.GetPixel(i,j);intr,g,b;/220亮度增加常量,该值越大,光亮度越强floatMyPixel=220.0f*(1.0f-MyLength/R);r=MyColor.R+(int)MyPixel;r=Math.Max(0,Math.Min(r,255);g=MyColor.G+(int)MyPixel;g=Math.Max(0,Math.Min(g,255);b=MyColor.B+(int)MyPixel;b=Math.Max(0,Math.Min(b,255);/将增亮后的像素值回写到位图ColorMyNewColor=Color.FromArgb(255,r,g,b);MyImage.SetPixel(i,j,MyNewColor);/重新绘制图片MyGraphics.DrawImage(MyImage,newRectangle(0,0,MyWidth,MyHeight);八.百叶窗效果原理:(1).垂直百叶窗效果:根据窗口或图像的高度或宽度和定制的百叶窗显示条宽度计算百叶窗显示的条数量;根据窗口或图像的高度或宽度定制百叶窗显示条数量计算百窗显示的条宽度.(2).水平百叶窗效果:原理同上,只是绘制像素点开始的坐标不同.效果图:实现代码:垂直百叶窗privatevoidbutton1_Click(objectsender,EventArgse)/垂直百叶窗显示图像tryMyBitmap=(Bitmap)this.pictureBox1.Image.Clone();intdw=MyBitmap.Width/30;intdh=MyBitmap.Height;Graphicsg=this.pictureBox1.CreateGraphics();g.Clear(Color.Gray);PointMyPoint=newPoint30;for(intx=0;x30;x+)MyPointx.Y=0;MyPointx.X=x*dw;Bitmapbitmap=newBitmap(MyBitmap.Width,MyBitmap.Height);for(inti=0;idw;i+)for(intj=0;j30;j+)for(intk=0;kdh;k+)bitmap.SetPixel(MyPointj.X+i,MyPointj.Y+k,MyBitmap.GetPixel(MyPointj.X+i,MyPointj.Y+k);this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;System.Threading.Thread.Sleep(100);catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);水平百叶窗privatevoidbutton3_Click(objectsender,EventArgse)/水平百叶窗显示图像tryMyBitmap=(Bitmap)this.pictureBox1.Image.Clone();intdh=MyBitmap.Height/20;intdw=MyBitmap.Width;Graphicsg=this.pictureBox1.CreateGraphics();g.Clear(Color.Gray);PointMyPoint=newPoint20;for(inty=0;y20;y+)MyPointy.X=0;MyPointy.Y=y*dh;Bitmapbitmap=newBitmap(MyBitmap.Width,MyBitmap.Height);for(inti=0;idh;i+)for(intj=0;j20;j+)for(intk=0;kdw;k+)bitmap.SetPixel(MyPointj.X+k,MyPointj.Y+i,MyBitmap.GetPixel(MyPointj.X+k,MyPointj.Y+i);this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;System.Threading.Thread.Sleep(100);catch(Exceptionex)MessageBox.Show(ex.Message,信息提示);九.马赛克效果原理:确定图像的随机位置点和确定马赛克块的大小,然后马赛克块图像覆盖随机点即可.效果图:实现代码:马赛克效果privatevoidbutton1_Click(objectsender,EventArgse)/以马赛克效果显示图像tryintdw=MyBitmap.Width/50;intdh=MyBitmap.Height/50;Graphicsg=this.pictureBox1.CreateGraphics();g.Clear(Color.Gray);PointMyPoint=newPoint2500;for(intx=0;x50;x+)for(inty=0;y50;y+)MyPointx*50+y.X=x*dw;MyPointx*50+y.Y=y*dh;Bitmapbitmap=newBitmap(MyBitmap.Width,MyBitmap.Height);for(inti=0;i10000;i+)System.RandomMyRandom=newRandom();intiPos=MyRandom.Next(2500);for(intm=0;mdw;m+)for(intn=0;ndh;n+)bitmap.SetPixel(MyPointiPos.X+m,MyPointiPos.Y+n,MyBitmap.GetPixel(MyPointiPos.X+m,MyPointiPos.Y+n);this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;for(inti=0;i2500;i+)for(intm=0;mdw;m+)for(intn=0;n1)intj=height-iModel;while(j1)intiPos=rnd.Next(100000)%iModel;/将该点的RGB值设置成附近iModel点之内的任一点Colorcolor=img.GetPixel(i+iPos,j+iPos);img.SetPixel(i,j,color);j=j-1;i=i-1;/重新绘制图像g.Clear(Color.White);g.DrawImage(img,newRectangle(0,0,width,height);十一:扭曲效果原理:将图像缩放为一个非矩形的平等四边形即可效果图:实现代码:扭曲效果privatevoidbutton1_Click(objectsender,EventArgse)/以扭曲效果显示图像if(h=panel1.Height/2)w=0;h=0;Sizeoffset=newSize(w+,h+);/设置偏移量Graphicsg=panel1.CreateGraphics();Rectanglerect=this.panel1.ClientRectangle;Pointpoints=newPoint3;points0=newPoint(rect.Left+offset.Width,rect.Top+offset.Height);points1=newPoint(rect.Right,rect.Top+offset.Height);points2=newPoint(rect.Left,rect.Bottom-offset.Height);g.Clear(Color.White);g.DrawImage(MyBitmap,points);十二.积木效果原理:对图像中的各个像素点着重(即加大分像素的颜色值)着色.效果图:实现代码:积木效果privatevoidbutton1_Click(objectsender,EventArgse)/以积木效果显示图像tryGraphicsmyGraphics=this.panel1.CreateGraphics();/BitmapmyBitmap=newBitmap(this.BackgroundImage);in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论