![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#数字图像处理
稻田里展望者
GIS代码爱好者
展开
-
C#Canny边缘检测算法
在进行边沿检测前先对当前图像做相关操作,m_Bitmap是当前图像Rectangle rect = new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height);BitmapData bmpData = m_Bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, m_Bitmap.PixelFormat);IntPtr ptr = bmpData.Scan0;int byt原创 2022-01-05 01:35:16 · 1279 阅读 · 0 评论 -
C#边缘点跟踪方法(图像处理)
//边缘点跟踪方法 //边缘跟踪,递归算法 //k:图像纵坐标 //l:图像横坐标 //inputImage 梯度图像 //outputImage 输出边缘图像 //thrLow:低阈值 private void traceEdge(int k,int l,double[]inputImage,ref byte[]outputImage,byte thrLow) { //8领域 int.原创 2022-01-04 16:58:21 · 1700 阅读 · 0 评论 -
高斯低通滤波原理(图像处理)
一般来说,噪声都是由高频成分组成的,所以用低通滤波器对图像进行卷积处理,就可以有效地滤除噪声。高斯函数就是一个这样的低通滤波器,它属于线性滤波。高斯函数的主要特征:它的傅里叶变换函数仍然是高斯函数。所以应用快速傅里叶变换可以把空间域内的卷积运算变换为频率域内的乘积运算,这样对于半径很大的高斯核来说,大大降低了运算时间。在图像处理中,需要的二维高斯函数:来源:《C#数字图像处理算法典型案例》 赵春江 人民邮电出版社...原创 2022-01-04 14:27:57 · 3962 阅读 · 0 评论 -
C#高斯平滑算法 :二维高斯卷积代码实例
//高斯平滑处理方法 //inputImage 输入图像 // outputImage 输出图像 //sigema 均方差 private void gaussSmooth(double[]inputImage,out double[] outputImage,double sigema) { //方差 double std2 = 2 * sigema * sigema; ...原创 2022-01-04 14:08:40 · 1255 阅读 · 0 评论 -
Canny边缘检测算法原理
Canny算子是在边缘检测的三个指标和三个准则的基础上发展起来的一种很有效的边缘检测方法三个指标:好的检测好的定位最小响应3个准则:信噪比准则定位精度准则单边缘响应准则canny边缘检测算法步骤:1、用高斯滤波器对对图像进行平滑处理2、利用一阶偏导算子找到图像灰度沿着水平方向Gx和垂直方向Gy的偏导数,并按下列公式求出梯度的幅值和方位。(一般选用性能最好的sobel算子)求幅值公式:求方位角公式:3、对梯度幅值进行非极大值抑制,即找到局部梯度最大值。方法是在3X3的领域窗原创 2022-01-03 21:29:36 · 7750 阅读 · 0 评论 -
C#自动阈值选择:Otsu法编程实例(图像分割)
//Otsu阈值 private void OtsuToolStripMenuItem_Click(object sender, EventArgs e) { if (m_Bitmap != null) { Rectangle rect = new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height); BitmapDat原创 2022-01-03 17:45:14 · 693 阅读 · 0 评论 -
C#自动阈值选择:Otsu法
Otsu法是一种使类间方差最大的阈值确定方法,所以也称最大类间方差法。该方法具有简单、处理速度快等特点。是一种常用的阈值选取方法。其基本思想是:把图像中的像素按灰度值用阈值T分成两类C1和C2,C1有灰度值在0~T之间的像素组成,C2由灰度值【T+1 ~,L-1】之间的像素组成。计算方法:其中w1(t)为C1中所包含的像素数,w2(t)为C2中所包含的像素数,u1(t)为C1中所有像素的平均灰度值,u2(t)为C2中所有像素的平均灰度值。让T在[0,L-1]范围内依次取值,是平方最大的T原创 2022-01-03 17:19:05 · 795 阅读 · 0 评论 -
C#迭代法图像二值化处理
private void 图片二值化ToolStripMenuItem_Click(object sender, EventArgs e) { if (m_Bitmap!=null) { Rectangle rect = new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height); BitmapData ...原创 2022-01-03 16:49:15 · 489 阅读 · 0 评论 -
C#自动阈值选择:迭代法
迭代法的基本思想是:开始选择一个阈值作为初始估计值,然后按某种策略通过迭代不断地改变这一估计值,直到满足给定的准则为止。步骤:1、在一幅灰度范围为[0,L-1]的图像中,选择灰度图像的中值作为初始阈值T0,其中图像中对应的灰度级i的像素数为ni。2、利用阈值T把图像分割成两个区域:R1和R2,用下式计算区域R1和R2的平均灰度值u1和u2。u1=[0*n0+1*n1+2*n2+3*n3+......+Ti*n(Ti)] / [n0+n1+n2+n3+......+n(Ti)]u2=[T0*n(T原创 2022-01-03 14:45:38 · 1160 阅读 · 0 评论 -
C#截取picturebox的一部分图片
//m_Bitmap是当前图片 //创建新图位图 Bitmap bitmap = new Bitmap(m_Bitmap.Width , m_Bitmap.Height / 2); //创建作图区域 Graphics graphic = Graphics.FromImage(bitmap); //截取原图相应区域写入作图区 graphic.DrawImage(m_Bitm...原创 2022-01-03 14:07:43 · 2471 阅读 · 0 评论 -
C#边沿检测sobel方法
// BitmapData bmData = m_Bitmap.LockBits(new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); float valve = 50; for (int i = 0; i < 256; i++) gra.原创 2021-12-30 21:16:15 · 1212 阅读 · 0 评论 -
C#双线性插值
根据维基百科的定义:双线性插值,又称为双线性内插。在数学上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数(例如 x 和 y)进行插值。其核心思想是在两个方向分别进行一次线性插值。定义一个函数方法ReClass //使用双线性插值法进行重采样 private Bitmap ReClass(Bitmap bitmap) { Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitm原创 2021-12-30 21:07:10 · 1921 阅读 · 0 评论 -
C#图像灰度化:指针法
//打开图片 private void button1_Click(object sender, EventArgs e) { //创建OpenFileDialog对象 OpenFileDialog openFileDialog = new OpenFileDialog(); //创建一个筛选器 openFileDialog.Filter = "jpeg文件|*.jpg";原创 2021-12-28 21:33:42 · 330 阅读 · 0 评论 -
C#图像灰度化:内存法
//打开图片//创建OpenFileDialog对象 OpenFileDialog openFileDialog = new OpenFileDialog(); //创建一个筛选器 openFileDialog.Filter = "jpeg文件|*.jpg"; //设置对话框标题 openFileDialog.Title = "打开图片:"; //启用帮助按原创 2021-12-28 21:29:58 · 278 阅读 · 0 评论 -
C#图像灰度化:提取像素法
加载图像//创建OpenFileDialog对象 OpenFileDialog openFileDialog = new OpenFileDialog();//创建一个筛选器openFileDialog.Filter = "jpeg文件|*.jpg";//设置对话框标题openFileDialog.Title = "打开图片:";//启用帮助按钮openFileDialog.ShowHelp = true;//如果结果为打开,则选定文件if (openFileDialog.Sho原创 2021-12-28 20:46:04 · 634 阅读 · 0 评论 -
C#打开文件夹加载图片
打开文件夹加载图片 //创建OpenFileDialog对象 OpenFileDialog openFileDialog = new OpenFileDialog(); //创建一个筛选器 openFileDialog.Filter = "jpeg文件|*.jpg"; //设置对话框标题 openFileDialog.Title = "打开`图片`:"; //启用帮助按钮原创 2021-12-28 20:31:30 · 3589 阅读 · 0 评论