日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C#图形处理系列(一)——最简单第一步:逆反处理、二值处理

發(fā)布時(shí)間:2024/4/15 C# 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#图形处理系列(一)——最简单第一步:逆反处理、二值处理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在本系列博文中,將介紹幾種常見(jiàn)的圖形處理算法。上文C#圖片處理常見(jiàn)方法性能比較 中以彩色轉(zhuǎn)灰色處理為例探討了3中方法的性能,因此彩色轉(zhuǎn)灰度處理就不再另做介紹。

public enum DealType
{
黑白處理,
逆反處理,
平滑處理,
霓虹處理,
浮雕處理,
霧化處理,
銳化處理,
二值處理,
馬賽克處理,
油畫(huà)處理
}

DealType枚舉定義了常見(jiàn)的圖形處理方法。

/// <summary>
/// 具有圖片處理功能的接口
/// </summary>
public interface IImageProcessable

{
void ProcessBitmap(Bitmap bmp);
unsafe void UnsafeProcessBitmap(Bitmap bmp);
}

IImageProcessable接口提供圖形處理接口,所有圖形處理類都實(shí)現(xiàn)了該接口。

ProcessBitmap(Bitmap bmp) 直接提取像素法處理圖形,處理效率較低,適合處 理小圖片。

UnsafeProcessBitmap(Bitmap bmp)? 提供高效率的圖形處理方法,以指針或內(nèi)存拷貝法處理圖形,不安全代碼。

?

public class ImageDealFactory
{
public static IImageProcessable CreateDealImage(DealType dealType)
{
IImageProcessable dealImage = null;
switch (dealType)
{
case DealType.黑白處理:
dealImage = new BlackWhiteImage();
break;
case DealType.霓虹處理:
dealImage = new NeonImage();
break;
case DealType.逆反處理:
dealImage = new RebelliousImage();
break;
case DealType.平滑處理:
dealImage = new SmoothImage();
break;
case DealType.浮雕處理:
dealImage = new ReliefImage();
break;
case DealType.霧化處理:
dealImage = new FogImage();
break;
case DealType.銳化處理:
dealImage = new SharpenImage();
break;
case DealType.二值處理:
dealImage = new TwoValueImage ();
break;
case DealType.馬賽克處理:
dealImage = new MosaicImage();
break;
case DealType.油畫(huà)處理:
dealImage = new OilImage();
break;
}
return dealImage;
}
}

ImageDealFactory 圖形處理工廠。

先從最簡(jiǎn)單的圖形處理介紹起,最簡(jiǎn)單的要算逆反處理、灰度處理

、積木二值處理了。

?

逆反處理

逆反處理的原理很簡(jiǎn)單,用255減去該像素的RGB作為新的RGB值即可。

g(i,j)=255-f(i,j)

/// <summary>
/// 逆反處理
/// </summary>
public class RebelliousImage : IImageProcessable

{
public void ProcessBitmap(System.Drawing.Bitmap bmp)
{
int width = bmp.Width;
int height = bmp.Height;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
Color c = bmp.GetPixel(i, j);
int r = 255 - c.R;
int g = 255 - c.G;
int b = 255 - c.B;

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

}
}
}

#region IImageProcessable 成員


public unsafe void UnsafeProcessBitmap(Bitmap bmp)
{
int width = bmp.Width;
int height = bmp.Height;
Rectangle rect = new Rectangle(0, 0, width, height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte* ptr = (byte*)(bmpData.Scan0);
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
ptr[0] = (byte)(255 - ptr[0]);//B
ptr[1] = (byte)(255 - ptr[1]);//G
ptr[2] = (byte)(255 - ptr[2]);//R
ptr += 4;

}
ptr += bmpData.Stride - width * 4;
}
bmp.UnlockBits(bmpData);
}

#endregion
}

?

?

逆反處理對(duì)黑白分量比較多的圖片較明顯,故截文字圖。

?

二值處理

二值處理,顧名思義,將圖片處理后就剩下二值了,0、255就是RGB取值的極限值,圖片只剩下黑白二色,從上一篇C#圖片處理常見(jiàn)方法性能比較 可知,二值處理為圖像灰度彩色變黑白灰度處理的一個(gè)子集,只不過(guò)值就剩下0和255了,因此處理方法有些類似。進(jìn)行加權(quán)或取平均值后進(jìn)行極端化,若平均值大于等于128則255,否則0.

/// <summary>
/// 二值處理
/// </summary>
public class TwoValueImage:IImageProcessable

{
#region IImageProcessable 成員

public void ProcessBitmap(System.Drawing.Bitmap bmp)
{
int width = bmp.Width;
int height = bmp.Height;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
Color c = bmp.GetPixel(i, j);
int iAvg = (c.R + c.G + c.B) / 3;
int iPixel = 0;
if (iAvg >= 128)
{
iPixel = 255;

}
else
{
iPixel = 0;
}

bmp.SetPixel(i, j, Color.FromArgb(iPixel, iPixel, iPixel));


}
}
}

public unsafe void UnsafeProcessBitmap(System.Drawing.Bitmap bmp)
{
int width = bmp.Width;
int height = bmp.Height;
Rectangle rect=new Rectangle(0,0,width,height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
// byte* ptr =(byte*)bmpData.Scan0;
//for (int i = 0; i < height; i++)
//{
// for (int j = 0; j < width; j++)
// {
// int avg = (int)((ptr[0] + ptr[1] + ptr[2]) / 3);
// if (avg >= 128)
// {
// avg = 255;
// }
// else
// {
// avg = 0;
// }
// ptr[0] = ptr[1] = ptr[2] = (byte)avg;

// ptr += 4;
// }
// ptr += bmpData.Stride - bmpData.Width * 4;
//}

int byteCounts = bmpData.Stride * height;
byte[] arr = new byte[byteCounts];
IntPtr p = bmpData.Scan0;
Marshal.Copy(p, arr, 0, byteCounts);
for (int i = 0; i < byteCounts; i += 4)
{
int avg = (int)((arr[i] + arr[i + 1] + arr[i + 2]) / 3);
if (avg >= 128)
{
avg = 255;
}
else
{
avg = 0;
}
arr[i] = arr[i + 1] = arr[i + 2] = (byte)avg;
}
Marshal.Copy(arr, 0, p, byteCounts);
bmp.UnlockBits(bmpData);
}

#endregion
}

?

處理效果如上圖,有點(diǎn)像毛筆手繪的,如果沒(méi)有很好的畫(huà)家,還真說(shuō)不定一些古裝電視劇中的人物畫(huà)像有可能是用二值法處理的哦。

二值處理法在驗(yàn)證碼識(shí)別中也經(jīng)常用到,往往先將驗(yàn)證碼進(jìn)行二值處理,這樣驗(yàn)證碼的顏色比較單一,處理起來(lái)容易些。











轉(zhuǎn)載于:https://www.cnblogs.com/sndnnlfhvk/archive/2012/03/04/2379344.html

總結(jié)

以上是生活随笔為你收集整理的C#图形处理系列(一)——最简单第一步:逆反处理、二值处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲我射av | 99热都是精品 | 日本新japanese乱熟 | 一区精品在线观看 | 日本欧美在线观看 | 一区二区三区视频免费 | 印度午夜性春猛xxx交 | 成人午夜影院 | 国产专区一区二区三区 | 性欧美激情 | 久久亚洲一区二区三区四区五区 | 高潮喷水一区二区三区 | 国产精品无码一本二本三本色 | 97干在线 | 亚洲风情亚aⅴ在线发布 | 久久久免费电影 | 性综艺节目av在线播放 | 欧美aaaaa| 中文字幕一区不卡 | 亚洲AV无码乱码国产精品色欲 | a√在线视频| 亚洲av永久无码精品一百度影院 | 插插宗合网 | 精品国产一区二区视频 | 精品国产av一区二区三区 | 国产精品一区二区三区在线看 | 国产全肉乱妇杂乱视频 | 久久成年| 在线观看亚洲色图 | 日批视频在线免费看 | 欧美精品123 | 日本乱论视频 | 亚洲一区二区三区四区在线播放 | 中文字幕视频 | 成人黄色免费网址 | 天天干精品 | 一级片一区 | 女人下面喷水视频 | 日韩精品成人在线 | 一区二区三区福利视频 | av网站免费在线 | 中文字幕日韩一区 | 国产乱人伦app精品久久 | 亚洲av中文无码乱人伦在线观看 | 国产精品视频免费网站 | 38在线视频 | 国产日韩欧美在线播放 | 高清中文字幕av | 久久精品无码av | 白浆四溢 | 成人一级免费视频 | 上原亚衣在线观看 | 涩涩涩在线视频 | 免费啪啪网址 | 黄色大片aa| 五月天av网 | 成人午夜在线播放 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 日本a级黄| 美国av毛片| 国产一区二区波多野结衣 | 精品人妻无码中文字幕18禁 | 99情趣网 | 五月激情站 | 男女交性视频 | 国产精品夜夜爽张柏芝 | 国产精品无码中文 | 婷婷色亚洲 | 日本欧美一区二区三区 | 97香蕉超级碰碰久久免费软件 | 日韩欧美国产一区二区三区在线观看 | 久久99久久99精品免观看粉嫩 | 国产三级国产精品 | 国产又黄又大又爽 | 亚洲一区二区日韩欧美 | 欧美裸体按摩 | 波多野结衣av在线观看 | 国产色婷婷 | 麻豆影视在线免费观看 | 男人的天堂在线视频 | 无码国精品一区二区免费蜜桃 | 岛国av免费 | 操久久| 日韩成人午夜 | 欧美三级电影在线观看 | 日韩国产欧美一区二区 | 在线精品亚洲欧美日韩国产 | 99精品在线免费观看 | 国产高清一区二区三区 | 精品人妻一区二区三区换脸明星 | 三级做爰在线观看视频 | wwwjavhd | 亚洲国产综合视频 | 尤物视频在线观看视频 | 在线观看日本一区 | 日本黄网免费 | 亚洲精品乱码久久久久久黑人 | 午夜三级影院 | 性欢交69国产精品 |