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程序示例,你可以快速上手实践这些技术。希望本文对你有所帮助,祝你在图像处理领域取得更好的成果!
热门推荐
去西藏旅游完全指南:高原反应预防、防晒保暖、饮食安全等实用建议
战术运营执行完美,T1 3-0击败TES晋级四强
复盘国米3-0完胜:劳塔罗破荒 巴雷拉主导胜势 国米套路性优势尽显
95.4%受访青年认同家乡是人生的重要底色
她把仙居山村搬进直播间,“陈玉琴现象”带给我们什么?
如何证明"不知情"?法律视角下的多维度解析
食用油一二三四级,有什么差别?如何选择?
不同食用油有啥区别?如何选?哪种更健康?一文说清!
10公里跑进50分钟!专业训练指南助你突破自我
现金流量与流动负债比率:企业财务健康状况的敏感指标
经济前景不确定时,你该如何评估自己的财务状况?
夹具的结构设计与应用,如何满足工业加工需求
养老人形机器人:智慧养老的未来趋势与投资机遇
孕期高风险因素管理及阿司匹林使用指南
陈鸿宇:中国内地民谣男歌手
为什么不建议用即热式电热水器?看完即热式热水器优缺点就懂了!
小厨宝安装利弊解析及家庭选择建议
黄金重量计量标准全解析:克、盎司、千克有何区别?
如何按需求购买产品
大众EA211发动机机油使用指南:不同类型机型的正确选择
贵州省2024年最好大学排名:贵州大学跻身百强,贵州师范学院第3
受遗赠人接受遗赠的表示形式不限于书面形式 | 案例精选
长寿从50多岁做起,必须少吃这3种食物
亚麻籽油的优缺点分析(探究亚麻籽油的营养价值和潜在风险)
睡眠时长与健康:探索睡眠时长与生活质量的关系
潘璋简介 潘璋生平
“什么言什么什么成语”:解析这个成语的正确写法
工程新世代:5个不一样的发展趋势
硫磺皂的历史演变与现代应用
南京地湖所牵头编制的团标发布实施,形成水生态健康评价技术体系