C# OpenCvSharp 图像锐化:让你的图片焕发细节之美!
创作时间:
作者:
@小白创作中心
C# OpenCvSharp 图像锐化:让你的图片焕发细节之美!
引用
CSDN
1.
https://blog.csdn.net/sD7O95O/article/details/138986050
图像锐化是计算机视觉和图像处理中的一个重要技术,可以增强图像的细节和清晰度。本文将介绍如何使用C#和OpenCvSharp库实现两种图像锐化方法:传统的卷积核锐化和USM(Unsharp Mask)锐化算法。通过本文,你将学习到图像锐化的原理和具体实现代码。
效果展示
让我们先来看看图像锐化的效果:
USM锐化算法原理
USM锐化算法是一种常用的图像锐化方法,其基本步骤如下:
- 对原图像进行高斯滤波
- 用原图像像素值减去一个系数乘以高斯滤波后的图像像素值
- 将得到的像素值归一化到0~255范围内
USM锐化公式为:
(源图像 - w * 高斯模糊) / (1 - w)
其中w表示权重,通常取值范围为0.1~0.9,默认值为0.6。
USM锐化算法可以去除一些细小的干扰细节和图像噪声,相比直接使用卷积核锐化得到的图像更可靠。
项目实现
下面是一个完整的C# WinForms程序示例,实现了图像加载、卷积核锐化和USM锐化功能。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;
namespace OpenCvSharp_图像锐化
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
string imgPath = "";
Mat mat;
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = fileFilter;
if (ofd.ShowDialog() != DialogResult.OK) return;
pictureBox1.Image = null;
imgPath = ofd.FileName;
pictureBox1.Image = new Bitmap(imgPath);
}
private void button1_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
return;
}
mat = new Mat(imgPath);
// 定义锐化卷积核
InputArray kernel = InputArray.Create<float>(new float[3, 3] {
{ 0, -1, 0 },
{ -1, 5, -1 },
{ 0, -1, 0 }
});
Cv2.Filter2D(mat, mat, mat.Type(), kernel);
Cv2.ConvertScaleAbs(mat, mat);
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
}
pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);
}
/// <summary>
/// USM锐化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
return;
}
mat = new Mat(imgPath);
Mat blur = new Mat();
Mat usm = new Mat();
Cv2.GaussianBlur(mat, blur, new OpenCvSharp.Size(0, 0), 25);
Cv2.AddWeighted(mat, 1.5, blur, -0.5, 0, usm);
blur.Dispose();
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
}
pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(usm);
}
}
}
总结
通过本文,你已经学习了图像锐化的两种方法:卷积核锐化和USM锐化算法。同时,通过一个完整的C# WinForms程序示例,你可以快速上手实践这些技术。希望本文对你有所帮助,祝你在图像处理领域取得更好的成果!
热门推荐
元宇宙基础设施包括哪些关键技术?
软件测试7种方法全解析:黑盒/白盒/渗透测试工具2025年强势推荐
车路云一体化城与城之间,如何构建全国一张智能交通网
什么是溯因推理(第一性原理)
机器学习中的朴素贝叶斯算法与逻辑回归算法:原理与应用对比
企业如何建立全面的数据安全管理体系
美国看病中介服务机构的作用与费用解析
淀粉链长分布测定方法及其应用
瓜氨酸是什么,有什么作用
如何防止黑色衣物褪色?这份实用指南请收好
驾照体检项目及法律意义解析
现在一般墓地价格范围受哪些因素影响,如何选择性价比高的墓地?
报销电子化系统:如何实现企业报销的数字化管理?
城市通勤新选择?上班族怎么选择自行车
民政大病救助申请所需材料全面解析
高温合金龙头企业钢研高纳深度分析
改革开放以来的饮食变革
故宫的面积:揭秘这座皇家宫殿的庞大与精致,带你领略千年古韵!
H2O的生活之源:水在自然与人类生活中的不可替代性
揭秘注塑机快速换模的七大步骤,助力智能制造升级
什么是卟啉病?这种罕见疾病的发病机制与日常管理全解析
卟啉症:一种罕见的代谢性疾病
NFC果汁真的无添加剂吗?你喝的NFC果汁是100%纯果汁饮料吗
麦肯锡报告《工作新未来》:2030年我们应该做什么工作?
磷酸铁锂电池失效原因汇总分析
如何在派出所报警立案处理
安帅难为无米之炊,皇马输球不能承受之重
项目如何制定质量目标
高热惊厥一定会诱发癫痫吗?怀疑孩子癫痫,这些检查必须做……
高热惊厥跟癫痫病症状区别