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程序示例,你可以快速上手实践这些技术。希望本文对你有所帮助,祝你在图像处理领域取得更好的成果!
热门推荐
小腿肿胀有解:4大原因及科学应对方案
选择座椅电梯品牌需要考虑的九大方面
座椅品牌定位案例分析
从备受万人追捧到遭受人责骂,张颂文做错了何事?陈道明所言不虚
近十年烟花爆竹企业规模发展解析
省市场监管局发布烟花爆竹类产品安全消费提示
烟花竟如此暴利,利润率高达300%!这背后到底有啥特殊原因?
探索热带风情:海南万宁巴厘村旅游指南与特色介绍
孕妇吃桂圆好吗
孕妇食用桂圆的注意事项及7大饮食禁忌
普洱茶与桂圆干搭配泡水喝的利弊及适宜方法解析
孕妇能喝枸杞泡水吗?孕妇吃枸杞要注意哪些事?
武汉至成都自驾攻略:5天穿越三国古道与道教名山
修仙热潮:风靡全世界的道家文化
小米手机卡顿?这几招让你秒变流畅达人
中医降胆固醇三大神器:决明子、山楂、枸杞
有氧运动+HIIT:双管齐下降胆固醇
胡萝卜竟是降脂神器?
C语言数组分组实战:将1到33的数字分为和为88的六组
茅山道士:从历史渊源到影视演绎的角色设计揭秘
茅山道士引德道长:道教文化的传承者
林正英:用生命塑造的茅山道士传奇
甲硝唑漱口水:口腔健康的秘密武器
甲硝唑漱口水使用全攻略:功效、使用方法和注意事项
婚外情致三成婚姻危机,法律维权面临多重困境
情感与法律双管齐下,专家教你应对“小三”危机
双十一手机屏幕碎了?教你快速修复!
一碗萝卜海带排骨汤,这些人群不宜食用
10000张床位、三级医疗保障,燕郊打造京津冀养老新地标
手机内屏摔碎了?教你6步拯救爱机!