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程序示例,你可以快速上手实践这些技术。希望本文对你有所帮助,祝你在图像处理领域取得更好的成果!
热门推荐
消费维权应保存的证据
什么是具身智能?《让网络空间与物理世界保持一致:具身智能综述》
影视配音创作准备过程
专家解读315晚会被曝光案例 部分解决深层问题仍存
微观盟友:揭秘益生菌的健康密码与应用前景
城市:天际线DLC大揭秘:公园生活与夜生活如何让你的城市焕然一新?
慢性牙根尖周炎会自己好吗
神话四凶:上古时代的四大恶灵
通过U盘将第三方软件安装到各大品牌电视的方法
醋酸钠在水处理中的作用
原肌球蛋白的结构与功能解析
月子餐有哪些
Ps 滤镜:模糊
我该如何应对越来越焦虑的自己?用CBT治疗焦虑症实例
烟台房价持续下跌,新房二手房齐跌!市场信心能否带动楼市回暖?
信用分怎么提高
《白色虎式》:一部融合奇幻与现实的战争电影
《白色虎式》:一部融合奇幻与现实的战争寓言
老丢钥匙的解决方法是什么?这些方法对生活便利有何影响?
2024年A股上市公司分红2.39万亿 分红超百亿个股名单一览
如何利用课间休息时间提高学习效率?
蒸汽发生器在消毒领域的运用作用有哪些?
“体重管理年”掀起全民减肥热潮 健康生活方式成主流
脖子淋巴疼咳嗽是怎么回事
肺磨玻璃结节应该如何调理才能更快消失
民间借贷中的财产捍卫之路:如何合法保护自己的权益
叶姓男孩名字寓意好又好听的 叶姓男孩取名大全
泄压阀的原理与应用
鱼缸风水学之鱼的颜色与五行
猫咪吃完食物为什么会一直舔嘴?揭秘这一行为背后的原因