图像处理算法
文章平均质量分 67
tony365
树大招风
展开
-
image adaptive 3dlut based on deep learning
就是一个分段函数,每一段都是非线性的。一个PNG curve可以有 knot节点,和非线性的参数 得到。然后就得到了一个1D lut曲线。其实有点麻烦,直接预测1D lut就可以呀。原创 2023-05-11 17:19:30 · 1242 阅读 · 0 评论 -
hist seg, find_peaks
【代码】hist seg, find_peaks。原创 2023-04-17 17:43:32 · 119 阅读 · 0 评论 -
hist seg, find peaks, tps, pava单调拟合, isotonic-regression,REGULARIZED DISCRETE OPTIMAL TRANSPORT
有点类似Partial optimal transport的损失,不过Partial optimal transport只包含了Kx, Ky的约束,未包含 kx, ky。很好的两篇博客介绍,isotonic-regression 和 nearly-isotonic-regression,两者的原理如下:前者是强约束,后者是损失函数惩罚。isotonic-regression 是从左向右遍历, 遇到更小的则和当前的块平均,平均后的结果小于更前一个的时候还要再求平均。两篇博客都提供了动图,是很好的解释。原创 2023-04-17 17:23:42 · 223 阅读 · 0 评论 -
pot lib:optimal transport python库
当p=2时, 利用 M = ot.dist(xs, xt) 默认是metric=‘seuclidean’, 因此调用ot.emd2后,还要求一个平方根,毕竟是 1/p。当计算离散分布之间的最佳传输时,一个输出是OT矩阵,它将为您提供每个分布中样本之间的对应关系.再1D的情况下, ot.emd_1d, ot.emd2_1d, ot.wasserstein_1d 会有更好的计算效率。lamda是一个超参数,控制 熵的大小,lamda越大,对转换矩阵的熵约束越弱,会使结果的熵更大,转换矩阵更加平滑。原创 2023-04-17 17:15:20 · 1794 阅读 · 0 评论 -
mlq color transfer: Color Transfer Using Probabilistic Moving Least Squares
引文7主要介绍了一个标定方法:标定的图像如下:左图包含了亮度变化,右图是常见的颜色。标定方法是利用最小二乘求解 ccm, 或者利用文中提到的软件。因此求出ccm后,每个颜色都可以找到对应的点 ,因此 可以填充3Dlut.原创 2023-04-17 16:50:45 · 505 阅读 · 0 评论 -
基于optimal trasport的color transfer:Optimal Transportation for Example-Guided Color Transfer
本文提出了一种新的、通用的基于颜色转移的方法。其次颜色映射:使用最优运输来映射成对的颜色,并通过薄板样条曲线来规范这种映射。直接 应用这个转换在图像分割的地方会产生不想要的边,因此作者利用3D thin plate splines interpolation。通过OT算法得到最右的转换f_ij后,由于每个j可能对应多个i,那么怎么得到最终的j的颜色呢?3) 如果不用tps方法得到的图像如下,效果更差,artifact比较多。然后求出每一个块的 lab空间的 均值和方差(如论文中所说)原创 2023-04-17 15:46:13 · 396 阅读 · 3 评论 -
直方图 颜色映射
利用队列记录 hist src > tgt, src < tgt , src = tgt的 索引。然后,对于每个hist excess, 将其移动到 hist deficit 进行填充,注意这里填充的方式是滑动填充,采样的方式(值为val的所有像素随机选出一些替换)。可以保证直方图完全一致。而直方图规定化不能保证。相比于 直方图规定化有什么区别呢?直方图规定化(右边)更加平滑一些。原创 2023-04-11 13:17:19 · 483 阅读 · 0 评论 -
RGB 转换为 XYZ 和 LAB空间,forward matrix,CIE Color Calculator
XYZ 转换为sRGB则是相反的操作: 首先通过矩阵转换将 XYZ变为linear sRGB, 然后 gamma处理 得到sRGB.首先 sRGB 转换为 XYZ, 需要首先对 sRGB 反gamma处理变为 linear sRGB,cie xyz 是评估人眼视觉 常用的一个标准。两者之前如何转换很多人不太清楚。sRGB 是常见的一个图像标准。在通过矩阵转换 变为 XYZ。原创 2023-03-24 10:30:09 · 3470 阅读 · 0 评论 -
patch match
注意这里的更新方法:思考:1)根据8各邻域最小的进行更新可以吗?2)每次迭代 都会计算一遍距离。复杂度和距离有关。3)计算出完整光流后,中值滤波,然后插值得到完整光流是否可行。原创 2023-03-24 09:27:16 · 371 阅读 · 0 评论 -
分段插值方法和code,cubic spline, cubic hermite spline
比如拉格朗日插值 和牛顿插值,无论是Lagrange插值还是Newton插值,本质都是用一个多项式来进可能精确地描绘过节点的原始函数。但多项式插值的矛盾之处在于,若节点太少,则插值出来的函数与原始函数可能偏离较大,返回的插值结果对于实际的指导用处不大;但若节点太多,则多项式的阶数也会需要相应增加,但太高的阶数容易又会导致绘制出的插值曲线在边缘处不稳定,这便是龙格现象。多项式插值,顾名思义,即以一个多项式的形式来刻画经过一系列点的曲线。仅用于精确的数据,因为拟合曲线精确地通过给定的点。原创 2023-03-23 19:18:25 · 1665 阅读 · 0 评论 -
python 旋转图像code
【代码】python 旋转图像code。原创 2023-03-21 16:22:15 · 350 阅读 · 0 评论 -
lattice regression: 求解查找表
那么(1,2,3)所在的bin 的直方图加上er1,eb1,eg1。最终可以构建一个1,2,3,4.,,255的直方图,文中时raw图0-1023的直方图。是约束边缘的项,因为训练数据分布步会是均匀的,想象在3Dlut中饱和度很大的点训练集中可能不会太多或者缺失,这个时候需要对 3Dlut的边缘位置(像素值达到1的点,想象一个立方体除了与(0,0,0)接触的3条边,剩余9条边,使原来是1的现在仍保持1)然后d就是想要的分布,现在的分布时线性,转换为d的分布,就利用直方图规定化的方法,求一个反向查找表。原创 2023-03-21 14:21:28 · 546 阅读 · 0 评论 -
白平衡,颜色校正,颜色映射When Color Constancy Goes Wrong, brown
为什么选择3*11矩阵,作者在有说到各个kernel function的表现下图说明 3*11表现较好和 Guowei Hong, M Ronnier Luo, and Peter A Rhodes. A study of digital camera colorimetric characterisation based on polynomial modelling. Color Research & Application,26(1):76–84, 2001.这两篇论文可以读一下。原创 2023-03-16 09:49:00 · 1515 阅读 · 1 评论 -
Approximate Cross Channel Color Mapping from Sparse Color Correspondences颜色映射
本文将颜色映射分为两个步骤:第一,非线性各通道映射,比如gamma;第二,线性跨通道映射, 比ccm。此外,该方法从稀疏匹配中估计模型,并且不需要密集的几何对应,并显示出良好的性能。本文提出了一种颜色映射方法,它可以补偿具有共同语义内容的图像之间的颜色差异,例如从不同视点拍摄的场景的多个视图。2)各通道非线性拟合(利用HMM方法得到一个lut 或者 拟合一个方程,应该差不多)颜色映射模型可以通过 点的匹配 作为前提。原创 2023-03-16 09:30:29 · 150 阅读 · 0 评论 -
Colorization using Optimization:基于优化的上色算法
着色是一种由计算机辅助的向单色图像或电影添加颜色的过程。本文提出了一种简单的着色方法,它既不需要精确的图像分割,也不需要精确的区域跟踪。可以通过最小二乘方法,也可以通过迭代法,比如代码中使用雅可比迭代法求解该方程。只需要用一些颜色的涂鸦来注释图像,该算法可以产生一个完全彩色的图像或图像序列。代码中实现两个方法,一个调用库函数,一个雅可比迭代求线性方程组。本文主要分析下面的代码,写的很清晰易懂,效果很好。一个像素的颜色可以由邻域像素颜色的加权得到。具有相似强度的相邻像素应该具有相似的颜色。原创 2023-03-16 09:19:10 · 778 阅读 · 0 评论 -
Multi-Camera Color Correction via Hybrid Histogram Matching直方图映射
即将图像一 的直方图 映射为 图像二的直方图,使图像一的色彩接近图像二。这是一篇直方图匹配的论文,通过直方图匹配达到颜色转换的目的。左中右分别为, 图1,图2,映射后的图1(色调接近图2)2是局部颜色的调整(把累计直方图的直角展开)直方图映射效果:看起来还行。1个是全局的直方图匹配。直方图均衡化后的直方图。原创 2023-03-16 09:13:51 · 476 阅读 · 0 评论 -
[LK光流法,disflow using Dense Inverse Search, VariationalRefinement变分优化 原理和代码]
上面有一些struct 继承自ParallelLoopBody, 主要是tbb的优化方法并行加速操作calc函数: 比如输入为I0,I1两个图像,和一个光流flow, 然后主要调用calcUV函数CV_Assert(!CV_Assert(!CV_Assert(!Mat uv[2];calcUV函数:也是整个算法的框架//一些assert操作, 对输入的要求CV_Assert(!CV_Assert(!CV_Assert(!CV_Assert(!原创 2023-03-02 13:38:05 · 1670 阅读 · 11 评论 -
引导滤波code
引导滤波是三大保边平滑算法之一。原理介绍参考图像处理基础(一)引导滤波。原创 2023-02-10 18:12:23 · 2712 阅读 · 0 评论 -
scipy learn sharpen filter
根据图像对学习滤波核之前研究过根据图像对生成3Dlut, 以及生成颜色变换系数这里我们利用图像对学习 滤波。原创 2023-01-28 17:47:25 · 650 阅读 · 0 评论 -
scipy 优化求解warp参数
torchgeometry 是一个基于pytorch的几何库,后续可能会用到。采用暴力搜索的方法求 仿射变换的旋转角度,位移等参数是可以的,但是速度很慢。利用深度学习求解位姿变换矩阵的论文 或 求解光流的论文 都已经有不少。之前通过优化可以得到颜色转换系数,可以得到滤波核,那么是否也可以求解。后续尝试pytorch优化,光流等方法,看是否可以得到 warp参数。已知一对图像,分别是warp前后的图像,如何求解warp参数?实验表示,不太行,或者说我的方法不太行。原创 2023-01-28 17:44:12 · 255 阅读 · 0 评论 -
opencv函数cv2.warpAffine 和 cv2.warpPerspective 的理解和复现
但是warpPerspective的转换矩阵是3*3的透视变换矩阵,经过变换后平行线可能不在平行。warpPerspective 和 warpAffine 是类似的。其中用到重查找函数:根据tx,ty坐标位置,获取值。也可以求解转换矩阵的逆后,再正变换,结果相同。warp perspective 实验结果。验证以上代码和opencv中的一致性。首先进行坐标转换,然后应用插值。和cv2.remap函数相同。仿射矩阵是2 * 3的矩阵。原创 2023-01-28 17:40:50 · 2026 阅读 · 0 评论 -
sklearn.neighbors 最近邻相关算法,最近邻分类和回归
k值的最优选择 高度依赖于数据:一般来说,一个更大的k 抑制噪声的影响,但使分类边界不那么明显。在数据未均匀采样的情况下,基于半径的邻居分类RadiusNeighborsClassifier可能是更好的选择。如果我们不再是求解到所有样本的距离,而是求解到不同类别样本中心的距离,距离哪个样本中心最近,我们即认为该待预测样本属于哪个类,这就是NearestCentroid算法.基本的最近邻分类使用统一权重:也就是说,分配给查询点的值是根据最近邻的简单多数票计算得出的。通过设置Q 的维度,可以达到降维的目的。原创 2022-12-28 21:19:45 · 2158 阅读 · 0 评论 -
scipy.interpolate插值方法介绍
多为插值方法,可以应用在2Dlut,3Dlut的生成上面,比如当我们已经有了两组RGB映射数据, 可以插值得到一个查找表。可以应用在2Dlut,3Dlut,当我们已经有了一个多维查找表,然后整个图像作为输入,得到查找和插值后的输出。得到结果如下, RBF一定程度上和 griddata可以互用, griddata方法比较通用。二维网格插值方法(好像和resize的功能比较一致)已知一些grid上的值。原创 2022-12-28 21:14:03 · 1923 阅读 · 0 评论 -
获取目录及其子目录文件
【代码】获取目录及其子目录文件。原创 2022-12-02 16:38:07 · 264 阅读 · 0 评论 -
图像超分辨率:Efficient and Degradation-Adaptive Network for Real-World Image Super-Resolution(DASR,oppo)
在DASRDataset只是计算blur kernel, 而 blur退化的执行, 以及 resize, noise, jpeg compress等退化的执行是在 DASRModel 类中的 feed_data 函数中。degradation_params 是一个33dim的向量,也是退化预测网络中回归损失函数的 gt.主要分为3个强度的退化空间,在处理数据集的时候,应用的概率分别是。对判别器有个大概的了解,输入的是3通道图像,输出的是单通道等尺寸map。在测试的时候没有判别器,训练的时候有判别器。原创 2022-11-25 13:39:31 · 2084 阅读 · 16 评论 -
图像超分辨率:小米低功耗超分,适用于移动端Extreme Low-Power Super Resolution Network For Mobile Devices
小米的论文,网络很简单很快,训练步骤比较多。原创 2022-11-22 17:50:51 · 487 阅读 · 0 评论 -
图像超分辨率:优化最近邻插值Super-Resolution by Predicting Offsets
对于边缘图像, 求出最近邻插值的图 和 net得到的offset,类似得到一个光流 ,然后NNresampling函数进行重映射操作(用到F.grid_sample函数)offset net只对边缘进行了处理,大部分是0。对于平坦区域,可以采用Lanczos等插值方法,上面时栅格图像,很多锯齿。放大尺寸的时候,最近邻插值的效果就是这种,观感不好。然后两者进行blending处理,得到最终的 sr图像。栅格化图像是锯齿形状的图像,如下。下面时混淆图像,边缘重叠不清晰。原创 2022-11-22 17:46:38 · 612 阅读 · 0 评论 -
图像超分辨率:调制Modulating Image Restoration with Continual Levels via Adaptive Feature Modification Layer
现有图像修复方法是不可调节的,因此训练得到的模型不一定适用于图像真是的degradation level,因此作者提出一种方法,可以调节修复的强度。本文目标是在一个统一的CNN框架中实现任意级别的图像恢复的模型,以达到下面的效果,输入一个类似强度的超参数,可以对图像不同强度的修复。当前的深度学习模型是在一个固定的退化程度的数据集上训练的,不能进行调节。跨度越大,效果越不太好,因此可以考虑多训练几个模型,插值得到新的模型。超分问题如何调节的?一个分离通道的卷积, 卷积核的大小,影响效果。原创 2022-11-22 17:35:08 · 963 阅读 · 0 评论 -
图像超分辨率:发散-收敛网路D2C-SR: A Divergence to Convergence Approach for Real-World Image Super-Resolution
总结,创新点主要就是分别训练多个网络,然后再对各个网络的结果进行fusion. 效果为什么会好?该论文引入一个从发散到收敛的网络,具体来说,首先训练4个网络分支,然后再融合为一个。为了是损失更关注纹理细节,而不是颜色,亮度,因此首先转换为 Y 空间,再规范化。残差 比 $I_{d}^i $ 与 $I_{d}^j $ 更接近。然后对 残差建立 三元组损失, 使 $I_{d}^i $ 与。一个是三元组损失,目的是 $I_{d}^i $ 与。更接近,$I_{d}^i $ 之间更远。原创 2022-11-22 16:31:11 · 198 阅读 · 0 评论 -
超分辨率:基于metric learning的无监督blind sr:Metric Learning based Interactive Modulation for Real-World Super
关于blind sr, 常规的方法是 建立各种 退化方法数据集,然后监督训练得到 退化的表示向量,在将 退化表征向量 和 图像 一起输入网络 建立blind sr, 如下图左本文提出的是下图右,主要区别在于 作者建立 退化强度的表征不是依赖监督训练,而是依赖度量学习(metric learning)。通过图像比较的方法建立损失函数进行训练,如右图。原创 2022-11-22 09:17:29 · 829 阅读 · 0 评论 -
图像超分辨率:任意尺度超分: Learning A Single Network for Scale-Arbitrary Super-Resolution(2021)
实际是设计了 4个expert (weight +bias), scale信息通过全连接层,生成weight , 进行加权合成一个expert(weight , bias),再进行卷积。输出再与上图的M相乘后 与 F相加, M是4层卷积后的单通道guide map. 其实相当于 图像特征信息 和 scale特征信息相融合,再融合。第二步是 HR 的每个像素都有一个filter, 作用于warp后的图像,每个像素的filter得到了HR该位置的pixel value.其中紫红色的内部结构为下面的结构,原创 2022-11-18 15:19:09 · 3010 阅读 · 2 评论 -
图像超分辨率:任意尺度超分方法Meta-SR: A Magnification-Arbitrary Network for Super-Resolution
这里 meta upscale module的输入是 一个 HW * 3的一个向量,其中HW是放大后的图像尺寸,每行的3列表示的是 映射到 LR图后 的像素便宜信息。举个例子以放大倍数r=2为例子,SR图中x=5的像素,在LR中是x=2.5。HW*3的向量通过全连接层 得到 HW * (in_channel * out_channel * k * k)的向量。这个向量表示的是HW个滤波器,对特征提取网络得到的特征进行滤波,得到最终的 HW尺寸的图像。最终的结果:数据指标基本领先。原创 2022-11-17 09:49:37 · 899 阅读 · 0 评论 -
隐式神经表示二:超分网络学习傅里叶系数Local Texture Estimator for Implicit Representation Function
将上面的结果,与双线性插值的 upscale LR 相加, 得到最后的结果,因此解码器输出的可以当作是。一个典型的隐式表示方法作超分:隐式体现在 不是 直接拟合图像,二十首先提取特征,再根据特征估计目标。接下来,就是根据 幅度,频率,相位得到 傅里叶表示,后续会输入 解码器。首先根据输入的坐标 找到 最近邻的4个坐标,利用了循环,目的是求。双线性插值得到网络的结果, areas是双线性插值的系数。可以理解为,输入一个坐标,利用 1)最近的4个点的特征。是encoder的输出,可以理解为提取的图像特征。原创 2022-11-16 17:56:22 · 2823 阅读 · 0 评论 -
隐式神经表示一:神经网络拟合图像Implicit Neural Representations with Periodic Activation Functions
就是说用一个神经网络表示一个函数。隐式神经表示(Implicit Neural Representations)是指通过神经网络的方式将输入的图像、音频、以及点云等信号表示为函数的方法[1]。对于输入x找到一个合适的网络F使得网络F能够表征函数Φ由于函数Φ是连续的,从而使得原始信号是连续的、可微的。这么干的好处在于,可以获取更高效的内存管理,得到更加精细的信号细节,并且使得图像在高阶微分情况下仍然是存在解析解的,并且为求解反问题提供了一个全新的工具。原创 2022-11-16 14:30:28 · 5296 阅读 · 1 评论 -
图像锐化一:几个常见的滤波核和usm
在图像锐化时,往往会 1. 放大 噪声,2. 引入aritfact, 3. 振铃效应 等负面效果。edge_enhance 效果较好,但是略微的亮度色彩偏差需要想办法避免。图像锐化和图像平滑相对应,前者用于增强细节表现,后者一般用于降噪。这里只是介绍了比较基础的三个滤波核的表现,附上代码和图像效果。enhance edge也有增强效果,但是背景颜色发生了变化。因此需要分析相关锐化方法的效果和副作用,避免图像失真。sharpen会有较多artifact,锐化太强。对字体的锐化, sharpen的效果最好。原创 2022-11-16 11:17:31 · 1990 阅读 · 0 评论 -
两个简单的线性 demosaicing 方法
该方法是一个假说:真是图像的 G-R和G-B 是在比较小的区域内,是比较flat的,因此对其插值避免引入较大的插值误差。然后在 G-R, G-B 平面上 插值得到G, 在得到 R,B。首先 周围4个G的平均,所占比例为2,2,2,2,即双线性插值。然后 中间的R通道 减去 周围的 R通道,表示亮度的变化。双线性插值的图像 加上 一个 亮度变化的偏差。分别是 00年04年的论文,方法比较简单。总的来说,就是首先估计出 G-R, G-B。在 5*5的patch上的线性插值。将此变化加到双线性插值的结果。原创 2022-11-14 17:56:31 · 850 阅读 · 0 评论 -
real-word super resulution: real-sr, real-vsr, realbasicvsr 三篇超分和视频超分论文, 拉普拉斯金字塔
真实世界数据的超分和视频超分算法原创 2022-10-28 11:46:07 · 1218 阅读 · 0 评论 -
cubic 插值和 bicubic,pytorch, opencv和matlab的实现差异
论文:An efficient bicubic interpolation implementation for real-time image processing using hybrid computing。opencv和matlab的bicubic实现差异主要在于 卷积系数的不同,opencv中使用的是0.75, matlab使用的是0.5,详细看链接。关于cubic 插值,指的是三次样条插值。求的是16个邻域pixel的weight。opencv和pytorch的实现是一致的,可以查看链接。原创 2022-10-28 11:13:56 · 2542 阅读 · 0 评论 -
pytorch:opencv的resize和torch.nn.functional.interpolate 比较
分别用resize函数和interpolate函数,输出 nearset, linear, cubic, area mode的图像。opencv的resize和torch.nn.functional.interpolate 比较。结论:align为False时, opencv和torch得到结果一致.原创 2022-10-27 11:05:35 · 1965 阅读 · 0 评论 -
basic_vsr 代码介绍
1)一个光流预测的网络,预测相邻两帧的 flow class SPyNet(nn.Module) : # 2)将图像和feature warp到另一帧的视角 def flow_warp(x,原创 2022-10-21 14:45:34 · 1232 阅读 · 1 评论