您现在的位置是:首页 > 正文

深度学习&图像处理(色彩编辑4)

2024-02-01 05:33:14阅读 2

1.YUV转换

YUV,是一种颜色编码方法。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

YUV颜色模式的Y通道与UV是分离的,没有UV色度信号的话则表示黑白图像。YUV主要用于彩色视频的优化,被用在彩色电视系统中,可以兼容黑白电视,黑白电视和彩色电视在接受信号时不至于使黑白电视接收不到彩色电视的信号。

YUV不像RGB那样要求三个通道的信号同时传输,同时由于亮度信号和色度信号的分离,在图像色彩处理方面较为便利,而且可以与RGB图像相互转换。类似的颜色模式还有Lab模式,L表示亮度,ab表示色差,也是用三通道亮度与色差分离表示颜色的。

YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式。因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式。

                                                           

import tensorflow as tf  
import numpy as np
import os#通过os模块调用系统命令
import glob#文件名模式匹配,不用遍历整个目录判断每个文件是不是符合
import sys
def rgb2yuv(rgb):
    """
    将RGB图像转换为YUV
    """
    rgb2yuv_filter = tf.constant([[[[0.299, -0.169, 0.499],
                                    [0.587, -0.331, -0.418],
                                    [0.114, 0.499, -0.0813]]]])
    rgb2yuv_bias = tf.constant([0., 0.5, 0.5])
    temp = tf.nn.conv2d(rgb, rgb2yuv_filter, [1, 1, 1, 1], 'SAME')
    temp = tf.nn.bias_add(temp, rgb2yuv_bias)
    return temp


def yuv2rgb(yuv):
    """
    将YUV图像转换为RGB
    """
    yuv = tf.multiply(yuv, 255)
    yuv2rgb_filter = tf.constant([[[[1., 1., 1.],
                                    [0., -0.34413999, 1.77199996],
                                    [1.40199995, -0.71414, 0.]]]])
    yuv2rgb_bias = tf.constant([-179.45599365, 135.45983887, -226.81599426])
    temp = tf.nn.conv2d(yuv, yuv2rgb_filter, [1, 1, 1, 1], 'SAME')
    temp = tf.nn.bias_add(temp, yuv2rgb_bias)
    temp = tf.maximum(temp, tf.zeros(temp.get_shape(), dtype=tf.float32))
    temp = tf.minimum(temp, tf.multiply(tf.ones(temp.get_shape(), dtype=tf.float32), 255))
    temp = tf.div(temp, 255)
    return temp

相关解释见图像色彩化Python实现:https://blog.csdn.net/OpenSceneGraph/article/details/100731155

2.图像彩色化方法

常见方法:基于偏微分方程Sapiro、图像融合、图像分割

基于图像分割:首先对目标和参考图像各个像素点进行特征提取、分类,再使用超像素分割与直方图统计相结合的方法对分类结果图像进行优化,最后转换到 HSV 色彩空间中,进行对应的色彩传递。近年来结合图像分类器来优化图像分割后的分类结果再进行彩色化处理。

图像彩色化方法的未来研究可以有效地结合字典学习、稀疏表示的特点,也许能够更好地解决具有复杂的灰度图像彩色化问题。但此方法不能解决参考彩色图像的选择受用户的影响的问题,因此未来可以采取针对参考图像的选择实现自动客观化的算法。

不论是人工着色还是参考源图像的色彩迁移方法,其实现方法多是通过对目标图像进行分割、分块对应着色,应用偏微分方程将彩色化问题转化为最优解问题,借助图像融合、图像分类分割、深度学习和稀疏字典等技术手段实现图像的彩色化。

相比其他图像处理技术,图像彩色化方法的种类相对单一,而且彩色化过程中,很难达到彩色化的实时性和人眼视觉效果的双重要求,后期的研究可根据应用场景和算法的特点来选择优化图像彩色化方法,例如在监控应用中,需进行人脸识别、目标跟踪定位等稍高精度的图像处理的应用场景,建议选择借助图像融合、结合深度学习和稀疏表示的彩色化处理手段。当图像增强彩色化处理应用在车载系统、实时监控等图像处理实时性较高的场景,建议选择基于图像分割的彩色化方法。当需要对图像内容的细节处理要求较高时,建议优先选择借助偏微分方程的彩色化方法。总而言之,图像彩色化作为一种图像增强处理手段,提高图像彩色化的精确度、视觉效果以及图像分析时的精准应用始终是图像彩色化技术的终极和最基本目的。

以人眼直观视觉效果为主,客观数据以峰值信噪比、均方误差的大小等来衡量。

3.CNN中局部感知、参数共享、多卷积核以及池化操作

  • 局部感知:传统的神经网络中,每个人工神经元都要与图像中的每个像素想连接,这样就造成了需要大量权重的问题,使神经网络难以训练。但是在卷积神经网络中,每个神经元不需要和上一层所有神经元相连,只需与对应部分像素相连接,这样就能大量减少所需权重的数量。另外在图像中距离相近的像素相关性较大,采用局部感受设置步长对应距离远近,舍弃并不需要学习的权重,提高学习效率
  • 参数共享:通过一个卷积核只学习图像不同位置的相同特征,这样一组连接可以共享一个权重,对相同目标的特征提取都可以使用一个权重,这样就又减少了参数。
  • 多核卷积:第二个特征中说明了一个卷积核只学习部分特征,这就需要多核卷积学习图像中的不同特征来提取原图像的特征,在多核卷积中每个卷积核的大小应该是相同的。
  • 池化:又称“下采样”。池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善过拟合现象。有最大池化和平均池化。

4.损失函数

损失函数分为经验风险损失函数和结构风险损失函数,经验风险损失函数反映的是预测结果和实际结果之间的差别,结构风险损失函数则是经验风险损失函数加上正则项(L0、L1(Lasso)、L2(Ridge))。

0-1损失:这种损失函数较为简单,当预测值与目标值不相等时为1,否则为0,用来记录分类错误的次数。

绝对值损失和平方损失常用于回归中。                                

对数损失函数常用于逻辑回归,样本预测值和实际值的误差符合高斯分布,使用极大似然估计的方法,取对数得到损失函数。

指数损失函数在boosting算法中比较常见。

5.深度学习训练算法:梯度下降法及其改进算法

梯度下降算法的主要思想是利用负梯度方向经过迭代找到当前函数的极小值。通俗得说就是找到函数变化率最大的位置往下走,反复进行这一过程直到函数收敛,就能找到当前待优化函数的最小值。

网站文章

  • 单链表与双链表(C语言)

    单链表的创建(头插法、尾插法),单链表的插入、删除等双链表的创建(头插法、尾插法),单链表的插入、删除等#include <stdio.h>#include <iostream>using names...

    2024-02-01 05:33:07
  • FTP的工作方式:Active FTP 及 Passive FTP

    FTP的工作方式:Active FTP 及 Passive FTP

    <br />為何常常連上 FTP 站台後,進去後就停留且無法列表?<br /><br />防火牆有很多種,其中有一些會禁止那些不是從內部網路IP發出的連接請求。而FTP協議是個很老的東東,沒有考慮這個...

    2024-02-01 05:33:00
  • /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found

    问题:./a.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/ycai/x10/stdlib/lib/libx10.so)可能的解决方案:第一种方案:执行strings /usr/lib64/libstdc++.so.6 | grep GLIBC

    2024-02-01 05:32:33
  • 相对(relative)定位和绝对(absolute)定位

    相对(relative)定位和绝对(absolute)定位

    首先,position的这两个属性一般是不使用的,因为有了浮动,所以我们才需要position属性来实现我们想要的布局。 1.相对定位(relative):相对于原来位置(原来位置指在文档流中默认的位置,若加上了浮动时,那么这个原来位置就是你设定浮动时的位置)的偏移,原来位置依然占据空间。 (1)box1和box2都没有设置position属性(没有设置float属性时) 效果图:我...

    2024-02-01 05:32:28
  • 威胁驱动的网络安全方法论

    威胁驱动的网络安全方法论

    本文主要内容取自洛克希德·马丁公司的论文:A Threat-Driven Approach to Cyber Security,想要全面准确了解论文内容的朋友建议阅读原文。希望能够抛砖引玉,为相关领域...

    2024-02-01 05:32:20
  • 解决eclipse集成maven插件 add dependencies搜索不到jar包的问题

    解决eclipse集成maven插件 add dependencies搜索不到jar包的问题

    背景: 新建了maven项目,要添加jar包,但有不想去网上一个一个搜索再写到pom.xml里 所以想在add dependencies中搜索添加,奈何搜索出来只有本地的那几个jar包(默认) 尝试: 去百度查了很多解决方法... 如:1、配置阿里的远程仓库,但...又报错-找不到xxx.zip文件~ 2、设置eclipse的属性啊...没有效果 3、删除...

    2024-02-01 05:32:13
  • 十年程序人生路,他是如何从某度外包逆袭成为阿里架构师的?

    十年程序人生路,他是如何从某度外包逆袭成为阿里架构师的?

    写在前面 我的一位朋友在某大型互联网公司担任架构师。刚毕业那年,他以外包的身份进入了某度,那个时候他几乎每一天都很焦虑,大家技术能力没差太多,为什么“我”是外包身份? 后来辞职,去了一家 20 人左右...

    2024-02-01 05:31:43
  • 分析国内独立开发者的现状,他们是如何生存的

    百度2013年第三季度《移动互联网发展趋势报告》报告显示: 今年第三季度,国内Android日活跃用户达到2.7亿,用户每天人均使用时长突破150分钟; 生活娱乐工具、视频、浏览器等高频或入口级应用受到用户青睐。

    2024-02-01 05:31:36
  • 【ELK系列二】es的UI界面elasticsearch-head插件安装

    【ELK系列二】es的UI界面elasticsearch-head插件安装

    安装elasticsearch-head插件由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方...

    2024-02-01 05:31:29
  • java 捕捉的异常抛出_Java异常抛出和捕获

    java 捕捉的异常抛出_Java异常抛出和捕获

    Java中把非正常情况分为两种,异常(Exception)和错误(Error)。异常.pngError:一般是指与虚拟机相关的问题(虚拟机错误、线程死锁等),这种错误无法回复或不可能捕获Excepti...

    2024-02-01 05:31:00