图像处理系统设计.docx

上传人:b****4 文档编号:12036628 上传时间:2023-04-16 格式:DOCX 页数:19 大小:286.98KB
下载 相关 举报
图像处理系统设计.docx_第1页
第1页 / 共19页
图像处理系统设计.docx_第2页
第2页 / 共19页
图像处理系统设计.docx_第3页
第3页 / 共19页
图像处理系统设计.docx_第4页
第4页 / 共19页
图像处理系统设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

图像处理系统设计.docx

《图像处理系统设计.docx》由会员分享,可在线阅读,更多相关《图像处理系统设计.docx(19页珍藏版)》请在冰豆网上搜索。

图像处理系统设计.docx

图像处理系统设计

图像处理系统设计

一、设计目的

随着社会的发展,数码相机以及相关产品的使用率大大增加,使得电子相片越来越普及。

由于使用者的经验不是很足,导致很多相片都达不到很好的效果,这迫切需要一款图像处理软件,为此我开发设计了图像处理系统,服务大众。

二、设计思路

1.文件:

打开,保存,另存为;

2.图像:

垂直翻转、水平翻转、翻转90度;

3.滤镜:

浮雕、黑白、反色、锐化、反色、棕褐色;

三、流程图

四、界面设计

五、关键代码

1.浮雕处理

privatevoidbtnfudiao_Click(objectsender,EventArgse)//以浮雕效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

intWidth=this.pictureBox1.Image.Width;

intHeight=this.pictureBox1.Image.Height;

BitmapnewBitmap=newBitmap(Width,Height);

BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;

Colorpixel1,pixel2;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

for(intx=0;x

{

for(inty=0;y

{

intr=0,g=0,b=0;

pixel1=oldBitmap.GetPixel(x,y);

pixel2=oldBitmap.GetPixel(x+1,y+1);

r=Math.Abs(pixel1.R-pixel2.R+128);

g=Math.Abs(pixel1.G-pixel2.G+128);

b=Math.Abs(pixel1.B-pixel2.B+128);

if(r>255)

r=255;

if(r<0)

r=0;

if(g>255)

g=255;

if(g<0)

g=0;

if(b>255)

b=255;

if(b<0)

b=0;

newBitmap.SetPixel(x,y,Color.FromArgb(r,g,b));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q);

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=newBitmap;

}

2.黑白处理

privatevoidbtnheibai_Click(objectsender,EventArgse)//以黑白效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

intHeight=this.pictureBox1.Image.Height;

intWidth=this.pictureBox1.Image.Width;

BitmapnewBitmap=newBitmap(Width,Height);

BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;

Colorpixel;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

for(intx=0;x

{

for(inty=0;y

{

pixel=oldBitmap.GetPixel(x,y);

intr,g,b,Result=0;

r=pixel.R;

g=pixel.G;

b=pixel.B;

//实例程序以加权平均值法产生黑白图像

intiType=2;

switch(iType)

{

case0:

//平均值法

Result=((r+g+b)/3);

break;

case1:

//最大值法

Result=r>g?

r:

g;

Result=Result>b?

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));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q);

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=newBitmap;

}

3.柔化处理

privatevoidbtnrouhua_Click(objectsender,EventArgse)//以柔化效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

intHeight=this.pictureBox1.Image.Height;

intWidth=this.pictureBox1.Image.Width;

Bitmapbitmap=newBitmap(Width,Height);

BitmapMyBitmap=(Bitmap)this.pictureBox1.Image;

Colorpixel;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

int[]Gauss={1,2,1,2,4,2,1,2,1};

for(intx=1;x

{

for(inty=1;y

{

intr=0,g=0,b=0;

intIndex=0;

for(intcol=-1;col<=1;col++)

for(introw=-1;row<=1;row++)

{

pixel=MyBitmap.GetPixel(x+row,y+col);

r+=pixel.R*Gauss[Index];

g+=pixel.G*Gauss[Index];

b+=pixel.B*Gauss[Index];

Index++;

}

r/=16;

g/=16;

b/=16;

r=r>255?

255:

r;

r=r<0?

0:

r;

g=g>255?

255:

g;

g=g<0?

0:

g;

b=b>255?

255:

b;

b=b<0?

0:

b;

bitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q)+1;

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=bitmap;

}

4.锐化处理

privatevoidbtnruihua_Click(objectsender,EventArgse)//以锐化效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

intHeight=this.pictureBox1.Image.Height;

intWidth=this.pictureBox1.Image.Width;

BitmapnewBitmap=newBitmap(Width,Height);

BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;

Colorpixel;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

int[]Laplacian={-1,-1,-1,-1,9,-1,-1,-1,-1};

for(intx=1;x

{

for(inty=1;y

{

intr=0,g=0,b=0;

intIndex=0;

for(intcol=-1;col<=1;col++)

for(introw=-1;row<=1;row++)

{

pixel=oldBitmap.GetPixel(x+row,y+col);r+=pixel.R*Laplacian[Index];

g+=pixel.G*Laplacian[Index];

b+=pixel.B*Laplacian[Index];

Index++;

}

r=r>255?

255:

r;

r=r<0?

0:

r;

g=g>255?

255:

g;

g=g<0?

0:

g;

b=b>255?

255:

b;

b=b<0?

0:

b;

newBitmap.SetPixel(x-1,y-1,Color.FromArgb(r,g,b));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q)+1;

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=newBitmap;

}

5.棕褐色处理

privatevoidbtnzonghese_Click(objectsender,EventArgse)//以棕褐色效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

intHeight=this.pictureBox1.Image.Height;

intWidth=this.pictureBox1.Image.Width;

Bitmapbitmap=newBitmap(Width,Height);

BitmapMyBitmap=(Bitmap)this.pictureBox1.Image;

Colorpixel1;

intr,g,b;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

for(inti=1;i

{

for(intj=1;j

{

pixel1=MyBitmap.GetPixel(i,j);

r=(int)(0.393*pixel1.R+0.769*pixel1.G+0.189*pixel1.B);

g=(int)(0.349*pixel1.R+0.686*pixel1.G+0.168*pixel1.B);

b=(int)(0.272*pixel1.R+0.534*pixel1.G+0.131*pixel1.B);

if(r>255)

r=255;

if(r<0)

r=0;

if(g>255)

g=255;

if(g<0)

g=0;

if(b>255)

b=255;

if(b<0)

b=0;

bitmap.SetPixel(i,j,Color.FromArgb(r,g,b));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q)+1;

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=bitmap;

}

6.反色处理

privatevoidbtnfanse_Click(objectsender,EventArgse)//以反色效果显示图像

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

BitmapoldBitmap=(Bitmap)this.pictureBox1.Image;

intHeight=this.pictureBox1.Image.Height;

intWidth=this.pictureBox1.Image.Width;

Bitmapbitmap=newBitmap(Width,Height);

Colorpixel;

doubleq;intw;

progressBar1.Value=0;

progressBar1.Maximum=Width;

for(intx=1;x

{

for(inty=1;y

{

intr,g,b;

pixel=oldBitmap.GetPixel(x,y);

r=255-pixel.R;

g=255-pixel.G;

b=255-pixel.B;

bitmap.SetPixel(x,y,Color.FromArgb(r,g,b));

}

progressBar1.Value++;

q=(progressBar1.Value/double.Parse(progressBar1.Maximum.ToString()))*100;

w=Convert.ToInt16(q);

label1.Refresh();

label1.Text=w.ToString()+"%";

}

this.pictureBox2.Image=bitmap;

}

7.水平翻转

privatevoidbtnshuipingfanzhuan_Click(objectsender,EventArgse)

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

Colorc=newColor();

Bitmapbox1=newBitmap(pictureBox1.Image);

intrr,gg,bb;

int[,,]pic=newint[600,600,3];

for(inti=0;i

{

for(intj=0;j

{

c=box1.GetPixel(i,j);

pic[i,j,0]=c.R;

pic[i,j,1]=c.G;

pic[i,j,2]=c.B;

}

}

for(inti=1;i

{

for(intj=1;j

{

rr=pic[i,j,0];

gg=pic[i,j,1];

bb=pic[i,j,2];

Colorc1=Color.FromArgb(rr,gg,bb);

box1.SetPixel(pictureBox1.Image.Width-i,j,c1);

}

pictureBox2.Image=box1;

}

}

8.垂直翻转

privatevoidbtnchuizhifanzhuan_Click(objectsender,EventArgse)

{

if(pictureBox1.Image==null)

{

MessageBox.Show("没有可处理的图片,请导入!

");

return;

}

Bitmapbt=newBitmap(pictureBox1.Image);

Bitmapbt1=newBitmap(pictureBox1.Image.Height,pictureBox1.Image.Width);

for(inti=0;i

{

for(intj=0;j

{

intR,G,B;

R=bt.GetPixel(i,j).R;

G=bt.GetPixel(i,j).G;

B=bt.GetPixel(i,j).B;

bt1.SetPixel(j,i,Color.FromArgb(R,G,B));

}

pictureBox1.Refresh();

pictureBox2.Image=bt1;

}

}

9.旋转90度

privatevoidbtnzhuan90du_Click(objectsender,EventArgse)

{

if(pictureBox1.Image==null)

{

MessageBox.Show("错误,没有导入图片!

");

return;

}

Bitmapbt=newBitmap(pictureBox1.Image);

Bitmapbt1=newBitmap(pictureBox1.Height,pictureBox1.Width);

for(inti=0;i

{

for(intj=0;j

{

intR,G,B;

R=bt.GetPixel(i,j).R;

G=bt.GetPixel(i,j).G;

B=bt.GetPixel(i,j).B;

bt1.SetPixel(j,i,Color.FromArgb(R,G,B));

}

pictureBox1.Refresh();

pictureBox2.Image=bt1;

}

}

六、总结

通过制作了图像处理系统,使我对图像处理技术的理解更进一步加深,制作过程中也使我对C#图像编程更加感兴趣,提高了学习C#的动力,同时,制作过程中出现的问题和在解决问题的过程中,使我提高了处理问题的能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1