ISP-EE(Edge Enhance)

2023-12-13 06:30
文章标签 ee edge isp enhance

本文主要是介绍ISP-EE(Edge Enhance),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ISP-EE(Edge Enhance)

EE模块在某些ISP主控中叫做sharpness或者sharpen,这些名称指代的模块是同一个,不用再纠结。主要就是在YUV域内弥补成像过程中图像的锐度损失,对边缘和细节进行加强,从而恢复场景本应具有的自然锐度。

锐度下降的原因

如上图所示,理想的边缘如左侧所示,是个高反差,对比强的边。而实际成像的效果是右侧的状况,反差变弱,且边缘过渡缓慢,给人的视觉冲击不够,也就看上去没有左侧清晰锐利。造成边缘这种衰减的主要原因一方面是镜头的物理性质的限制,具体的原因不做深入讨论,属于光学范畴,简单理解就是镜头本身就是低通属性,所以图像成像光信号经过镜头后相当于进行了一次低通滤波,会导致边缘衰减。另一方面就是Pipeline中例如去买赛克,NR等算法都是低通特性的,都会导致高频损失从而表现出锐度下降。

锐化的原理

由于图像中的细节和边缘在频域中主要体现为尖锐程度较高的高频段上,因此锐化基本思想就是增强图像分离后产生的高频分量在像素值中的比重。

上图摘自知乎博文《Understanding ISP Pipeline - Sharpen - 知乎 (zhihu.com)》。

我们在实际算法中的的做法就是将边缘反差过渡区域调整得更陡峭更突变,从而到达高反差,高对比实现锐利度的提升。如上图右下角图,白色为未处理的变化曲线,红色为处理后的效果,处理后过渡明显更快,反差更大,左上经过处理到右上后人眼视觉感觉也确实对比更强,更清晰。

算法又需要如何实际实现呢,其实这个和我们学习美术的时候一样,我们会描边,用2B把边缘描绘一遍,那么边缘在政府图像中就会更清楚,其实算法也是这种思路,就是通过边缘算法提取图像边缘,然后将边缘“描绘”到原始图像上,那么边缘也就更加请处理。

上述的描边过程其实可以简化为以下的流程:

从上图中可以看出叠加后的图像确实清晰度有提升,但是感觉效果并不太好,主要因为鸟的主体部分加强了,但是后面的背景本来平坦的区域经过加强后也出现了很多颗粒感,看上去很难受。所以针对这些问题我们需要优化算法,其实从这个框架看,我们唯一能做的其实就是一个优化边缘提取的filter,另外一个就是优化λ,所以实际用的时候往往采取一下框图:

经过filter提取的边缘经过一个边缘判决器,然后λ根据这个判决器的判决动态调整加强力度。关于这个判决器和λ的自适应调整内容有点绕,不做过多赘述,有兴趣的朋友可以参考B站本算法讲解。

代码演示

clc, clear, close all;preDelta = 2;   % 预滤波强度,值越大,边缘越强
th = 5;         % 边缘检测阈值
gain = 0.8;       % 边缘增强力度控制img = imread('./images/blurring.png');
figure();
imshow(img);
title('org');[h, w, c] = size(img);
img_yuv = rgb2ycbcr(img);
y = img_yuv(:, :, 1);Iblur = imgaussfilt(y, preDelta);
HighFC = y - Iblur;for i = 1: hfor j = 1: wif HighFC(i, j) > thHighFC(i, j) = HighFC(i, j) * gain;elseHighFC(i, j) = 0;endend
end
figure();
imshow(HighFC);
imwrite(HighFC, './images/edgeDemo.png');
title('edge');y = y + HighFC;
img_yuv(:, :, 1) = y;
res = ycbcr2rgb(img_yuv);
imwrite(res, './images/ee.png');
figure();
imshow(res);
title('res');

这篇关于ISP-EE(Edge Enhance)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/487426

相关文章

Java EE学习心得

–Java EE学习心得     1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程…….. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程,完事后,再思考  我编的程序还有那些不好的地方和要改进的地方,可以增加写什么功能等等;然后再去编程; 2. 先搭建整体框架再抠细节,在编程中不管是什么要先做出来,再去问怎么做!即是:先K

JavaEE应用的组件

1、表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,但JSP并不是唯一的表现层技术。 2、控制器组件:对于JavaEE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求,并将用户请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。 3、业务逻辑组件:是系统的核心组件,实现系统的业务逻辑

JavaEE应用的分层模型

不管是经典的JAVAEE架构,还是轻量级JavaEE架构,大致上都可以分为如下几层: 1、Domain Object(领域对象)层:此层由一系列的POJO(Plain Old Java Object)组成,这些对象是该系统的Domain Object,往往包含了各自所需实现的业务逻辑方法。 2、DAO(Data Access Object,数据访问对象)层:此层由一系列的DAO组件组成,这些D

JavaEE-文件操作与IO

目录 1,两种路径 二,两种文件 三,文件的操作/File类: 1)文件系统操作 File类 2)文件内容操作(读文件,写文件) (1)打开文件 (2)关闭文件 (3)读文件/InputStream (4)写文件/OutputStream (5)读文件/reader (6)写文件/writer (7)Scanner 四,练习: 1,两种路径 1)绝对路径

二、Maven工程的创建--JavaSEJavaEE

1、idea创建Maven JavaSE工程:  2、idea创建Maven JavaEE工程:   (1)手动创建 (2)插件方式创建 在idea里安装插件JBLJavaToWeb; 选择需要生成的项目文件后,右击: 项目的webapp文件夹出现小蓝点,代表成功。

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节(中)——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节(中)——物理原理与TCP_IP 一.应用层重点协议)1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS7. 自定义协议 二. 传输层重点协议 1 .UDP协议 2.1.1 UDP协议端格式 2.1.2 UD

ISP面试准备2

系列文章目录 文章目录 系列文章目录前言一.如何评价图像质量?二.引起图像噪声的原因三. ISP3.1 ISP Pipeline主要模块3.1.1坏点校正(Defect Pixel Correction, DPC)3.1.2黑电平校正(Black Level Correction, BLC)3.1.3镜头校正(Lens Shading Correction, LSC)3.1.4去马赛克

【JavaEE初阶】多线程(1)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 并发编程  线程 与 进程 创建线程 写法1  写法2 写法3 写法4 写法5 Thread类的常见构造方法 前台/后台 线程 并发编程  并发编程: 通过写特殊的代码 把多个cpu的核心都利用起来  多进程编程就是一种典型的并发编程 ,但多进程编程最大的问题是 进程太'重'了(创建进程/销

Edge 100 个好用插件

Microsoft Edge 浏览器自推出以来,凭借其快速、安全和丰富的扩展插件,赢得了许多用户的青睐。以下是一些精选的 Edge 浏览器插件,它们能够显著提升你的浏览体验和生产力。 Tampermonkey:这是一个强大的用户脚本管理器,可以让你自定义网页行为,实现各种自动化操作,如自动填写表单、绕过版权限制等。 Infinity 新标签页 (Pro):这个插件可以让你自定义新标签页,添加

JAVAEE初阶第六节——网络编程套接字

系列文章目录 JAVAEE初阶第六节——网络编程套接字 文章目录 系列文章目录JAVAEE初阶第六节——网络编程套接字 一. 网络编程基础1. 为什么需要网络编程2. 什么是网络编程3.网络编程中的基本概念 3.1 发送端和接收端 3.2 请求和响应 3.3 客户端和服务端 4. 常见的客户端服务端模型 5. TCP和UDP特点上的差别(初识) 二.Socket套接字 1. 概