首页 > 其他分享 >opencvsharp踩坑DAY1--图像增强emphasize

opencvsharp踩坑DAY1--图像增强emphasize

时间:2022-08-27 15:23:55浏览次数:57  
标签:-- dealing object Cv2 int emphasize opencvsharp factor 图像增强

cheche出差摸鱼做的一个用opencvsharp的东西,用于快速验证,水平极差,目前功能如下

 

今天搞的功能是复现halcon的图像增强算子emphasize,根据文档其运作过程为

1.输入均值(低通)滤波矩阵size,输入Factor,原图灰度集in

2.滤波in得图像m

3.然后out=round((in- m) * Factor)+in

效果如下

 

 

 它的增强原理是让滤波前后灰度的差值来判断灰度变化区域,假如区域内滤波变换平缓那(in- m)的绝对值会相对较小在乘以系数factor之后对原有的区域影响不大,但是在变化剧烈的区域内则会因为(in- m)对值会相对较大在乘以系数factor之后对原有的区域影响较大,而变化区域剧烈则往往体现于图形的边缘和角落,使得图像边缘和角落更为明显。

用opencvsharp实现如下

 

 

 

 1        private void emphasize()
 2         {
 3             int w ,h ;
 4             double factor;
 5             Cv2.CvtColor(dealing_object,dealing_object,ColorConversionCodes.BGR2GRAY);
 6             Mat mean = new Mat();
 7             w = int.Parse( InputBox("滤波器宽", "", ""));
 8             h = int.Parse(InputBox("滤波器高", "", ""));
 9             factor = double.Parse(InputBox("系数", "", ""));
10             Cv2.Blur(dealing_object,mean,new OpenCvSharp.Size(w,h));
11 
12             Mat output=new Mat(dealing_object.Size(),dealing_object.Type());
13             for (int i = 0; i < dealing_object.Height; i++)
14             {
15                 for (int j = 0; j < dealing_object.Width; j++)
16                 {
17                     int v = (int)Math.Round( (dealing_object.Get<byte>(i, j)- mean.Get<byte>(i, j) ) *factor)+ dealing_object.Get<byte>(i, j);
18 v = v > 255 ? 255 : v; 19 v = v < 0 ? 0 : v; 20 output.Set(i, j, v); 21 22 } 23 } 24 Cv2.ImShow("in", dealing_object); 25 Cv2.ImShow("out", output); 26 27 28 29 }

 

 

标签:--,dealing,object,Cv2,int,emphasize,opencvsharp,factor,图像增强
From: https://www.cnblogs.com/shtnm/p/16630165.html

相关文章

  • NetCore 入门 (五) : Options 模式
    1.QuickStartOptions模式可以说是Configuration的增强功能,Options模式存在的目的就是为了简化Configuration属性的读取和使用。但是从设计上讲,Options模式是完全独立的,有......
  • NetCore 入门 (七) : 承载系统
    1.介绍承载系统(Hosting,也就是泛型主机),提供了一种通用的功能:承载一个或多个需要长时间运行(Long-Running)的服务。承载系统是基于依赖注入开发的,并自动集成了以下特性:C......
  • Python环境安装
    一、下载地址https://www.python.org/downloads/二、安装软件这里介绍Windows系统下python环境安装InstallNow:为默认安装(不建议),不然会把环境自动安装到个人目录里,找......
  • NetCore 入门 (八) : 管道
    1.入门ASP.NETCore是一个Web开发平台,而不是一个单纯的开发框架。这是因为它具有一个极具扩展性的请求处理管道,我们可以通过对这个管道的定制来满足各种场景下的HTTP处理......
  • mysql常用操作汇总
    工作中经常用会遇到这种情况,可以访问mysql所在的服务器,但是服务器端口不对外暴露(通常因为安全原因)。这时,操作数据库只能通过命令行和mysqlclient窗口来实现。我对这些操作......
  • 计算机网路的基础知识
    一.由于javaweb简单的面试题引申出的计算机网络的基础知识谈谈网站是如何进行访问的1.输入一个域名enter2.检查本机的C:\Windows\System32\drivers\etc\下的配置文件中......
  • Dora拦截器详解
    1.QuickStartDora拦截器,为.NETCore量身定制的AOP框架。我们使用“缓存”这个应用场景来演示如何使用Dora:我们创建一个缓存拦截器,并将其应用到某个方法上。缓存拦截器......
  • 可以用对象作为另一个对象的key吗
    我觉得是不可以的例如:consta={}constb={key:'b'}constc={key:'c'}a[b]=123a[c]=456console.log(a[b])//456因为用对象作为key时,先会被......
  • final、static、abstract修饰符以及Interface接口
    转载:https://www.cnblogs.com/gbxblog/p/13887382.htmlfinal可以修饰:类、变量、方法当final修饰类的时候,说明该类不能被继承。当final修饰方法的时候,说明该方法不能被重......
  • smarty模板引擎中变量及变量修饰器用法实例
    smarty模板引擎中变量及变量修饰器用法实例_php实例_脚本之家 https://www.jb51.net/article/60243.htm本文实例讲述了smarty变量及变量修饰器的应用。分享给大家供大家......