如何自学图像编程

2023-10-26

如何自学图像编程

 现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。
 
 需要先明确几个问题:
 (1)你的基础如何?做图形图像的话,对数学要求比较高,至少要有大学数学的基础——微积分、线性代数、概率统计和数值分析都会用到的。不然,书看不下去,没法自学。如果要做深入的话,对英语也有一定的要求,绝大部分深入的资料都是英文的。

 (2)做哪个层面的?与硬件严重相关的只能选C,做应用层的话可以选C++和C#,我个人推荐C#,当然,智能手机还是推荐C++。做Web层面的话,目前最佳选择是Flash(其实Silverlight比Flash更适合做Web图像,好歹Silverlight有byte类型,有struct,但Silverlight的普及度不够),Html5/Canvas目前只能做简单的应用,复杂的还不行。如果只是做算法,matlab就够了,但一般不是科班出生,很少做纯算法的。做纯算法还有个缺点就是,算法转换为收入很难。鉴于C#写算法并不比用matlab写算法慢,不建议摸matlab。但matlab代码要能看懂,因为论文中很多算法是用matlab写的。

 (3)有没有克服困难的勇气。图像类项目大多不大,普遍的几千行代码就可以搞定。就这几千行代码,难度越大的钱越多。关键词就是困难和难度,工作量往往不是问题。也就是说,你越牛逼,越值钱。牛逼是没有止境的,不像那些靠体力的项目,身体是个硬的限制。

 下面的书籍,如果是写的英文名字,那就是推荐阅读英文版,如果是中文名字,那就说明,中文版写的/翻译的也不错,推荐看中文版而非英文版。都是可以直接下载到的或买到的。
 
 首先是两本核心书籍:
 (1) Image Processing,Analysis and Machine Vision 3ED。(中文名:《图像处理、分析与机器视觉》)
 (2) Computer Vision: Algorithms and Application(中文名:《计算机视觉——算法与应用》)

 第一本书偏重于基础,但是它写的可不基础。写的很简且信息量极大,但核心概念都讲了,重点算法大部分都列出来了。第二本书偏重于工程应用,概述了各个领域的有效算法,点到为止。
 如果看第二本没困难的话,可以忽略掉第一本。第一本书也不好读,一上来就讲了狄拉克分布,因此,要想从头到尾都看懂是几乎不可能的,但是它的内容的前后依存性不大,看不懂的直接略过去就行了,只看能看懂的即可。
 没必要看完,我也只看了30-40%感兴趣的部分,其它的要么是不感兴趣的,要么是看不懂的。
 只需要大学数学基础就可以开始看,能看懂部分就可以做项目了。找到和项目相关的内容,找到相应的参考文献,直接去看论文实现论文的算法即可。绝大部分重要论文Google Scholar都能搜到原文,如果英文水平不够,也可以在几个期刊网搜中文的论文,不是特别前沿的东西,中文的论文也有涉及到的。
 看书的重点是理解,理解算法最佳方式是自己把算法写一遍。可以参考OpenCV的代码来写。理解一个算法之后,这个算法就可以为你赚钱,不理解,是很难用对算法的。自己写算法。你才对这个算法的性能有直观的感受,知道可以通过哪些方式来改进它,知道怎么在性能和算法效果之间进行取舍,这对项目来说,是很重要的。
 不建议买第二本书的中文版,它的中文版阉割了参考文献和索引这两个最有使用价值的部分。
 
 把这两本书全部看完吃透,单靠大学水平的数学是不够的,至少得数学系本科生级别的知识储备。如果大学数学忘了,建议先复习一遍。
 自学推荐:
 (1)陈天权版《数学分析(一、二、三)》。这是国内最难的一套数学分析教材,为什么推荐它呢?它自成条理,信息量丰富,把图像分析深入所需的数学内容都包括进去了:微积分、点集拓扑、实分析、泛函、变分、复分析、流形……,重要概念都讲了。学完了,看论文问题不大。缺点就是难。可是,图像类项目的特点也是难。遇难而上是必须的。这套书虽难,但是思路极其清晰,就是看的慢一点而已。要知道,计算机所能发挥出的威力只是数学理论的一部分,随着计算机的计算能力越来越强,越来越多的数学方法会引入到程序中来,对于图像分析领域尤其如此。所以要未雨绸缪,别看有的数学知识现在用不上,说不定哪天就用到了。
 (2)Lax的《线性代数及其应用》。作者是沃尔夫奖得主,写的很简洁明要,且不与大学学的线性代数重复。
 (3)《Numerical Recipes》。数值分析有这一本书就够了,秒杀众书的书。这本书只看感兴趣的或当前用到的即可。

 

 鉴于图形和图像的关系越来越紧密,关于图形学的书籍也是值得一读的。推荐两本:
 (1)David F.Rogers的《计算机图形学的算法基础》。这本书实在是太经典了,就是有点老,比较基础。
 (2)《实时计算机图形学》这本书讲的都是比较现代的,正好结合上一本看。

 

 图像编程 = 算法 + 性能。因此,性能优化方面也得看。比如这本:《软件优化技术--IA-32平台的高性能手册》。
 
 会用Photoshop对图像编程很重要。Photoshop有强大的编辑功能和特效库,很多时候,可以用Photoshop先进行预研究,确定项目是否可行。可行的话,我们再把Photoshop的操作过程用算法来实现,实际项目中,经常会这么操作的。 Photoshop 推荐一本书:李金明、李金荣的《Photoshop CS5完全自学教程》。这本书写的非常棒,就是书名有点土,和那些垃圾书的书名很像。
 
 如果用C/C++的话,推荐《学习OpenCV(中文版)》,翻译的不错。如果用C#的话,没啥好书可以推荐,可以看看我博客中的文章。如果用Flash的话,推荐《Foundation ActionScript 3.0 Image Effects》。
 
 如果做的是和彩图有关的话,推荐《彩色数字图像处理》。其它的,《图像局部特征不变性特征与描述》写的也不错。
 
 ====
 下面举个例子讲讲工具、知识间的综合应用。
 要实现一个lemo特效,可以先利用现有工具得到像素之间的映射图(比如我这篇文章:《解决问题的艺术:半小时编程实现照片的反转负冲特效 》)。但这样一来,每种特效都需要一个像素映射图,增大了程序的尺寸,怎么办呢?
 一种方法是用Photoshop模拟它,然后,写图像处理算法来重复这一过程。这是用图像处理的方法来解决问题。
 另一种方法是将lemo特效当作一多元函数,特效前的图像是输入值,特效后的图像是输出值,先写出一个自由度高点的函数,再采用拟合的方法,找到合适的函数参数,然后检验这个函数的稳定性,靠谱的话就是它了。这是用数学的方法来解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自学图像编程 的相关文章

  • 保存原始rgb8bit 数据到bmp文件

    就填充方式来说 跟24位位图基本是一样的 不同的是bitcolor 位设置的颜色位数要填充为8 而不是24 百度了很久 目前只能是勉强能保存成图片 能正常打开 但目前还有未能理解的问题 列举如下 如果有知道的朋友 希望能得到您的慷慨解惑 感
  • OPENCV手势识别抓取图片

    PENCV手势识别抓取图片 一位油管的小哥做的项目非常棒 照着写了一个 代码 注意 看好cvzone的版本 太新的版本中有个函数没有 如果找不到这个函数的时候请更换一下库的版本 import cv2 from cvzone HandTrac
  • 图像的二值化分割,otsu类间方差法

    二值化图像指图像中的每个像素只取两个离散的值之一 用数学公式表示为 公式中 f x y 表示一幅数字图像 X Y表示该图像中某像素的坐标值 T为 二值化的阈值 表示经过阈值运算后的二值化图像 这里0和1仅仅是一个抽象表示 并非实际像素值 它
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • 通过matlab实现数字图像处理中的抠图换背景功能

    适合背景为蓝色的图片 效果最好 如果背景色为别的颜色 可对代码进行调整修改后使用 其实这里的代码最开始由于报错已经经过我的修改了 可能出现的异常情况 1 待抠图片以及需要替换的背景图片放置在代码文件所在的目录 不然会无法读取 不出结果 2
  • CUDA的下载安装

    大家好 下面将进行CUDA的下载安装 下载安装的详细步骤描述如下 1 CUDA下载 https download csdn net download qq 41104871 87462747 2 CUDA安装 1 首先 需要解压缩下载好的C
  • 基于Matlab实现图像拼接技术(附上完整源码+图像)

    图像拼接是数字图像处理中一个重要的问题 它的目标是将多张图像拼接成一张更大的图像 图像拼接技术在许多领域中都有广泛的应用 如全景图像拼接 医学图像拼接 遥感图像拼接等 本文将介绍一种基于Matlab实现的图像拼接技术 即基于特征匹配的图像拼
  • 深度特征融合---高低层(多尺度)特征融合

    目录 概述 基本概念 典型方法概述 相关工作 多尺度模型设计 Deep Feature Fusion for VHR 高分辨率图像 Remote Sensing Scene Classification DCA特征融合方法 基于神经网络的目
  • 【Matlab图片剪裁】

    标题Matlab剪裁图片 提取感兴趣部分 问题描述 当需要从一幅图片中提取一些感兴趣的内容时 比如一些细小的文字 图案等 如果从整个图片中直接提取 必然会大大增加计算量 导致处理时间很长 而且多数计算都是无效计算 进而非常消耗资源 解决办法
  • 无监督低照度图像增强网络ZeroDCE和SCI介绍

    目录 简介 Zero DCE 算法介绍 模型代码 无监督loss介绍 小结 Self Calibrated Illumination SCI 模型介绍 无监督loss介绍 小结 总结 简介 当前有较多深度学习的方法来做图像效果增强 但多数都
  • 【python-opencv】硬币检测

    使用 python3 8 x opencv 硬币检测 问题描述 设计思路1 使用简单特征识别 具体操作 部分代码 设计思路2 模板匹配 源码 模板制作 完整代码 问题描述 使用图像处理技术 从照片中识别硬币的个数 并判断总价值 设计思路1
  • pil_openvcv_scikit-image_tensorflow四种读图方式对比

    文章目录 1 四种不同的库读取jpg图显示 2 评估所读图片的差异 3 简单说明有差异原因 4 同样的流程对png图片进行处理 5 png图片转jpg 5 1 使用PIL进行转换 5 2 使用Opencv进行转换 5 3 使用Tensorf
  • cv2.minAreaRect()

    功能 求出在点集下的最小面积矩形 输入 格式 points array shape n 1 2 解释 其中points是点集 数据类型为ndarray array x1 y1 x2 y2 xn yn 输出 格式 rect tuple x y
  • 基于TensorFlow2实现的宠物识别系统(爬虫、模型训练和调优、模型部署)

    目录 开发环境 0 项目准备 1 数据集准备 2 数据预处理 3 构建模型 4 模型训练及验证 5 模型部署 6 项目地址 开发环境 作者 嘟粥yyds 时间 2023年8月25日 集成开发工具 PyCharm Professional 2
  • Python的PIL库

    Python图像库PIL Python Image Library 是python的第三方图像处理库 图像类Image class Image类是PIL中的核心类 比如从文件中加载一张图像 处理其他形式的图像 或者是从头创造一张图像等 Im
  • 图像特征提取技术

    目 录 前 言 基于颜色的特征提取 1 颜色空间 2 直方图以及特征提取 基于纹理的特征提取 1 灰度共生矩阵 2 tamura纹理 基于深度神经网络的图像处理 前 言 图像特征提取属于图像分析的范畴 是数字图像处理的高级阶段 本文将从理论
  • 目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像分类

    目录 前言 知识储备 图像分类基础知识 1 具体领域划分 2 图像分类问题的3层境界
  • ETC纹理压缩

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

    来源 友思特 机器视觉与光电 友思特分享 CamSim相机模拟器 极大加速图像处理开发与验证过程 原文链接 https mp weixin qq com s IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科 为您提供最新资讯 随着
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二

随机推荐

  • 低通滤波器算法实现_控制算法之超前-滞后补偿器(Lead_Lag Compensator)

    Lead Lag控制器主要从频域的角度来对被控系统进行校正 改善系统的频域特性 如相角裕度 幅值裕度以及灵敏度等 从而改善系统的稳定性及控制精度 是一种基于频率响应的校正方法 时域的卷积 频域的乘积 这句话很重要 深入理解 一 Lead L
  • flutter 防止widget rebuild(亲测有效2020篇)

    相比这个问题很多开发着都已经遇到了 头疼了很久了吧 我也是 网上搜到各种方法 试了还是不行 下面我举一下场景 跳转场景 页面A gt 页面B gt 页面C gt 页面D 从上面简单都例子 我很悲催的告诉大家不管我从哪个页面跳哪个页面 从B
  • Awk学习笔记

    Awk学习笔记 整理 Jims of 肥肥世家
  • windows下安装openssl的两种方式

    windows下按装openssl 第一种 第二种 因为工作需要第一次接触openssl 中间踩得坑实在是太多了 最后也算放弃了那种安装方式原则了一个比较简单的 第一种 第一种就是网上平常的说的方法 先下载 ActivePerl 5 24
  • 图文使用freetype渲染字体+字体颜色+字体大小

    freetype的介绍各种博客都有 可以搜索看看 freetype2 8的源码及编译出的库及头文件链接 https download csdn net download weixin 40550094 12117925 我这边就直接写dem
  • sql语句case when常用查询总结

    一 case when 语句语法逻辑 case when 是mySQL里面的控制流语句 和if then 的分支判断逻辑很相似 case when语句有两种 1 简单case when 2 case搜索函数法 简单case when只能处理
  • 大数据组件_Kafka学习

    Kafka学习 基本概念 1 Broker 每一台kafka机器节点就是一个broker 2 Producer 消息生产者 往kafka的topic写数据 3 Consumer 消息消费者 从kafka的topic读取数据 4 Topic
  • java生成大小写字母加数字的随机数

    小小的验证码的随机数生成 以前自己一直没有思考过 仔细想想其实实现起来并没有多难 只是自己没有想过这些东西的实现具体应该怎么做比较好 在自己思考后 参考了网上其他作者的一些代码 下面是具体的实现代码 public class Validat
  • LightGBM 原理、代码最全解读!

    来源 Microstrong 本文主要内容概览 1 LightGBM简介 GBDT Gradient Boosting Decision Tree 是机器学习中一个长盛不衰的模型 其主要思想是利用弱分类器 决策树 迭代训练以得到最优模型 该
  • 微信小程序如何访问本地的服务器,springboot2为例

    1 我们需要改一个配置就可以了 以springboot2的项目为例子 2
  • m.777lu.co/wap.php,MaliStore/app.wxss at master · kingpro/MaliStore · GitHub

    src url data font truetype charset utf 8 base64 AAEAAAALAIAAAwAwR1NVQrD s 0AAAE4AAAAQk9TLzJXBku4AAABfAAAAFZjbWFwX864igAA
  • 请问投稿中要求上传的author_SCI投稿过程中主要有哪些状态,持续时间大概多久?...

    原标题 SCI投稿过程中主要有哪些状态 持续时间大概多久 不同出版社旗下SCI杂志的投稿方式 过程以及状态有所区别 但是基本形式大致相同 我们掌握一种杂志的投稿及投稿状态 基本可以以一推百 不同杂志的审稿周期差异比较大 从几天到数月不等 甚
  • ElasticSearch字符串数组类型的精确查询与模糊查询(自定义分词后进行精确与模糊查询)

    一条数据中 有这样的一个字段Keyword Computational devices S models 现需要实现通过分号分词后来查询数据 查询规则如下 1 检索Computational 不区分大小写 时命中结果 2 检索Computa
  • linux中使用crontab设置定时任务

    1 crontab简介 crontab命令常见于 Unix和类Unix 的操作系统之中 用于设置周期性被执行的指令 该命令从标准输入设备读取指令 并将其存放于 crontab 文件中 以供之后读取和执行 crontab储存的指令被守护进程激
  • docker 安装 elasticsearch和kibana(亲测可行)

    1 版本可自己更换 docker pull elasticsearch 6 6 1 2 创建本地挂在目录 mkdir p usr share elasticsearch share config mkdir p usr share elas
  • 用Python完成寻找水仙花数

    首先说一下我是Python的初学者 如果有任何不正确或可以改进的地方 请大家多多包容 所谓 水仙花数 是指一个三位数 其各位数字的立方和等于该数本身 例如153 1 3 5 3 3 3 理解了题意后我们就可以明白找到水仙花的重点就在于将一个
  • R2_A_Taming the Herd

    题面 Taming the Herd Early in the morning Farmer John woke up to the sound of splintering wood It was the cows and they we
  • java中值传递和引用传递

    目录 值传递 引用传递 Java 中有两种数据类型 请谈一下值传递与引用传递 Java 中只有值传递么 值传递 package com github hcsp public class Main public static void mai
  • JAVA单元测试框架-6-Enable priority

    1 enabled属性 在Testng中 如果方法前面添加了 Test注释 然后没有其他的属性 那么默认这个用例会被自动运行 当测试用例没有书写完成 或者不想测试时 可以采用注解 Test enable false 来禁止测试用例的执行 E
  • 如何自学图像编程

    如何自学图像编程 现在 图像类信息越来越多了 对图像的编程需求也越来越多 图像类项目的特点是性价比高 单行代码的价格一般是普通的程序的10倍 每行代码能够卖几块钱 很多人把目光放在这个上面 刚才又有网友咨询 做图像要看些什么书 结合我的自学