2016-07-29 13:54:07 daduzimama 阅读数 692
  • Tensorflow-图像处理视频教程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 课程以图像处理软件Tensorflow作为核心武器,基于图像处理热点话题进行案例实战。选择当下热门模型,使用真实数据集进行实战演示,通俗讲解整个算法模型并使用tensorflow进行实战,详解其中的原理与代码实现。

    1388 人正在学习 去看看 唐宇迪

数字图像处理的学习之路

 

总:看山是山,看山不是山,看山还是山!

 

分:1,兴趣为主,爱好为主,乐此不疲。不求名,不图利,任劳任怨,埋头苦干。

       2,基础为主,博采众长。

       3,涉猎范围要广,要热爱生活,热爱艺术,热爱体育运动,孝敬父母,爱人如己,没有不良嗜好,性格开朗,积极向上,朝气蓬勃,充满干劲。

       4,要谦卑,要懂得分享,要低调做人,不懂要多问。

 

总: 一入侯门深似海,从此萧郎是路人。

 

 

旁白:

“无忌,我教你的还记得多少?”“回太师傅,我只记得一大半”

“那,现在呢?”“已经剩下一小半了”

“那,现在呢?”“我已经把所有的全忘记了!”

“好,你可以上了…”

 

(全文完)

 

Mr. Zhu. beibei

 

《圣经》------ 耶和华却对撒母耳说:“不要看他的外貌和他身材高大,我不拣选他,因为耶和华不像人看人,人是看外貌,耶和华是看内心。”(撒母耳记上16章7节  )

                                                                                         *配图和本文无关*

2017-05-05 15:48:30 tom_8899_li 阅读数 855
  • Tensorflow-图像处理视频教程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 课程以图像处理软件Tensorflow作为核心武器,基于图像处理热点话题进行案例实战。选择当下热门模型,使用真实数据集进行实战演示,通俗讲解整个算法模型并使用tensorflow进行实战,详解其中的原理与代码实现。

    1388 人正在学习 去看看 唐宇迪

通过摄像头图像处理案例来说明Spark流处理性能评估新方法及性能调优参数调试

1、Spark Streaming处理摄像头图像
2、Spark Streaming新的性能评估方式
3、Spark Streaming性能调优参数的使用

对于图像处理,数据肯定是在RDD中的,Receiver接收到数据后放在缓存中,然后按照特定的时间周期通过BlockManager存储数据,对于图像处理而言,数据肯定是有特定格式的,在处理的时候HOG进行特征的提取与检测等

在做这个项目的时候,我们采用了自己实现的算法来对性能进行评估,这里主要是写了一个自己的算法实现对CPU使用率的监控,并且通过调优一些参数来提升对Spark Streaming性能的优化。

假设Spark Streaming可以使用n个Core,我们设定每个Core在特定时间里使用的状态为
CPU的占用率
p=nn=1mt=1Cnt1mn

其中Cnt取值0,1

Receiver设置在2-5个比较好

Spark Streaming总共使用的Cores的总数 = receivers * BatchDuration / blockInterval

2016-06-10 21:29:45 duan_zhihua 阅读数 1832
  • Tensorflow-图像处理视频教程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 课程以图像处理软件Tensorflow作为核心武器,基于图像处理热点话题进行案例实战。选择当下热门模型,使用真实数据集进行实战演示,通俗讲解整个算法模型并使用tensorflow进行实战,详解其中的原理与代码实现。

    1388 人正在学习 去看看 唐宇迪
 第121课:  Spark Streaming性能优化:通过摄像头图像处理案例来说明Spark流处理性能评估新方法及性能调优参数测试


对于图像处理,数据肯定是在RDD中的,Receiver接受到数据后放在缓存中,然后按照特定的时间周期通过BlockManager存储数据,对于图像处理而言,数据肯定是有特定格式的,在处理的时候HOG进行特征的提取与检测等

在做这个项目的时候,我们采用了自己实现的算法来对于性能进行评估,这里主要是写了一个自己的算法实现对CPU使用率的监控,并且通过调优一些参数来提升对SparkStreaming性能的优化。

假设Spark Streaming可以使用n个Core,我们设定每个Core在特定时间里使用的状态

Spark Streaming总共使用的Cores总数 = concurrentJobs * receivers* batchDuration / blockInterval


2018-11-14 17:31:23 qq_34741911 阅读数 282
  • Tensorflow-图像处理视频教程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 课程以图像处理软件Tensorflow作为核心武器,基于图像处理热点话题进行案例实战。选择当下热门模型,使用真实数据集进行实战演示,通俗讲解整个算法模型并使用tensorflow进行实战,详解其中的原理与代码实现。

    1388 人正在学习 去看看 唐宇迪

案例一:提取图片的中心ROI区域,周围的白边去掉

解决步骤:

1.判读图片是否倾斜 ,方法:canny检测边缘,findContours 寻找轮廓,    RotatedRect minRect = minAreaRect(contours[t]);
        degree = abs(minRect.angle);判读角度是否大于0

2.如果倾斜,则进行仿射变换让图片不倾斜 ,方法:用getRotationMatrix2D,warpAffine进行仿射变换

3.获取轮廓,选择ROI区域,绘制ROI区域 Mat roiImg=src(bbox); src为原图,bbox类型为Rect,ROI区域。

案例二: 检测文档中出现的直线

1.threshold二值化图像

2.对图像进行形态学操作,只剩下直线了

3.霍夫直线检测 HoughLinesP  获取直线点的位置

4.图片上绘制直线位置

案例三:获取图片上的对象和计数

1.二值化图像

2.形态学操作

3.寻找轮廓

4.选择合适轮廓并绘制和计数

案例四:图片校正(图片呈俯视拍摄,校正为平面图)

1.二值处理

2.形态学操作

3.轮廓发现

4.绘制最外围轮廓

5.霍夫直线检测四条边

6.寻找四条边,下面寻找四条边的部分代码

int accu = min(width*0.5, height*0.5);

int deltah = 0;
    Vec4i topLine, bottomLine;
    Vec4i leftLine, rightLine;
    for (int i = 0; i < lines.size(); i++) {
        Vec4i ln = lines[i];
        deltah = abs(ln[3] - ln[1]);
        if (ln[3] < height / 2.0 && ln[1] < height / 2.0 && deltah < accu - 1) {
                topLine = lines[i];

     }
 

7.拟合四条直线方程 利用 y=kx+c的公式 直线一的代码

    float k1, c1;
    k1 = float(topLine[3] - topLine[1]) / float(topLine[2] - topLine[0]);
    c1 = topLine[1] - k1 * topLine[0];

8.寻找直线的交点    

   Point p1; // 左上角
    p1.x = static_cast<int>((c1 - c3) / (k3 - k1));
    p1.y = static_cast<int>(k1*p1.x + c1);

9.找到四个顶点进行透视变换

vector<Point2f> src_corners(4);

vector<Point2f> dst_corners(4);

getPerspectiveTransform(src_corners, dst_corners);

warpPerspective(src, resultImage, warpmatrix, resultImage.size(), INTER_LINEAR);

10.输出校正图

2016-11-15 13:21:13 plc_jianghao 阅读数 12585
  • Tensorflow-图像处理视频教程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 课程以图像处理软件Tensorflow作为核心武器,基于图像处理热点话题进行案例实战。选择当下热门模型,使用真实数据集进行实战演示,通俗讲解整个算法模型并使用tensorflow进行实战,详解其中的原理与代码实现。

    1388 人正在学习 去看看 唐宇迪

1.图像处理方法分类

输入 输出 等级 例子
图像 图像 初级 降噪,增强对比度
图像 图像特征 中级 轮廓提取
图像 图像表征的信息 高级 模式识别,机器视觉

2. 图像增强(image enhancement)

  1. 没有统一的图像增强算法,要针对具体问题具体分析,用户是最终标准的评判者;用户说好就是好,所以没有所谓”最好 ”的图像增强算法。

3. 像素点之间的关系

这里写图片描述

名称 表示法 包括点
4邻域(4-neightbors) N4(p) {2,4,5,7}
D邻域(d-neightbors) ND(p) {1,3,6,8}
8邻域(8-neightbors) N8(p) {1,2,3,4,5,6,7,8}

4. 邻接(adjacency)、连通(connectivity)、区域(regions) 、边界(boundaries)

4.1 邻接

邻接有的书上翻译叫连接,其实是一个意思。这就体现了看英文资料的好处,没有翻译导致的奇异。
f(p)f(q)分别表示像素点p、q的强度,V表示函数f()全体值域的y一个子集,则

名称 定义
4邻接(4-adjacency) f(p)Vf(q)VqN4(p)
8邻接(8-adjacency f(p)Vf(q)VqN8(p)
m邻接(m-adjacency) 1.f(p)Vf(q)V
2.qN4(p) or qND(p)(N4(p)N4(q))V

m邻接又称为混合邻接,其作用是为了消除8邻接导致的多路问题。
为了解释这个多路问题,需要引入路径的概念。路径(path)是一系列像素点的集合,相邻的俩个像素点的关系要满足一种邻接的定义。比如4邻接路径,就表示路径中相邻两个像素点满足4邻接关系。8邻接路径、m邻接路径的定义与此类似。
假设V={1},则各种邻接的路径如下图所示:
这里写图片描述
可以看出8邻接路径存在多路的问题。

4.2 连通

设S为图像中部分像素的集合
如果可以在S中找到一条路径连接像素点p和q,则称p和q 在S中是连通的。自然,根据路径选择方法的不同,连通也应该分为4连通,8连通和m连通。
在S中,对于任意的像素点p,所有与p点连通的像素点的集合(包括p点)称为一个连通组件。如果在S中只能找到一个连通组件,则称S为连通集合

4.3 区域

图像中的一个连通集合也可以叫做一个区域。自然,依据使用的连通类型不同,区域也分为4连通区域,8连通区域(原则上讲也应该有m连通区域,但在涉及区域的问题讨论中很少应用m连通)。
如果两个4连通区域可以合并为一个更大的4连通区域,则称这两个区域是4邻接的。相应的,也存在8邻接。
如果两个类型相同的连通区域无法合并,则称这两个连通区域是不想交的(disjoint)。
ps:在同一副图像上划分区域时,只会采用一种连通类型。要么都是4连通的,要么都是8连通的。不会出现我把图像的左边划分为4连通的,右边划分为8连通的情况。

4.4 前景(foreground)和背景(background)

假设在一副图像上有k个不想交的区域。
设Ru等于所有者k个区域的集合,(Ru)c等于图像上Ru以外的像素点的集合。
则,Ru称为图像的前景,(Ru)c称为Ru的背景。(这个相对性很重要,背景是针对前景而言的)

4.5 边界(boundary,border)

如果区域R中存在像素点p,且p点的领域中至少有一个像素点落在R的背景中,则R中所有这样的点P组成的集合叫做区域R的边界。
根据上面的定义,自然也存在4连通边界和8连通边界的说法。但更多使用的是8连通边界,否则如下图中红圈圈出的点将不被认为是边界,这很不自然。
这里写图片描述
以上方式定义的区域的内边界,响应的,在背景中与内边界相邻的点组成的集合称为外边界。

5. 距离

两个像素点间的距离计算方式,常见的有三种,定义如下:

De(p,q)=(p.xq.x)2+(p.yq.y)2

D4(p,q)=|p.xq.x|+|p.yq.y|

D8(p,q)=max(|p.xq.x|,|p.yq.y|)

6. gamma校正

6.1 gamma校正的定义

首先介绍一下变换函数

S=crγ

其中
r—某个像素点的强度;
c—为尝试;
γ—为变换参数;
s—此像素点变换后的强度;
利用以上公式对输入图像的每个像素点进行处理的过程称为gamma校正。

6.2 gamma校正的作用

1.修复图像失真

下图展示了一副自然界图像经电子设备呈现在人眼上的过程
这里写图片描述
如果自然界图像经过传感器直接转化为数字图像时,会发生失真。这种失真是由于传感器硬件引起的,无法避免。经验上可以将失真总结为如下的形式:

(x,y)=(x,y)α

为了弥补这种失真,可以在步骤2增加一部gamma校正,即:
(x,y)=gamma((x,y)α)

gamma(r)=r1α

经过这样的校正,数字图像和自然界图像就相同了。
可以看出,校正的关键是α值的选择。这个值一般由传感器的生成厂家根据自身产品的特点固化在传感器里,对传感器的用户来说,是不需要关系的。

2.增加对比度

下图展示了不同γ下,输入与输出的关系
这里写图片描述
可以看出当γ<1时,会增强原图像中暗处的对比度;
可以看出当γ==1时,无任何效果;
可以看出当γ>1时,会增强原图像中亮处的对比度;
但是对强度的影响是非线性的。

7. 灰度分层(intensity-level slicing)

8.Bit平面分层(bit-plane slicing)

概念上比较抽象,举个例子来理解。
假设每一个像素点由2bit组成,一副图像有4个像素点。则如下图所示,图像1可以由图像2和图像3叠加而来。
这里写图片描述
那么,图像2和图像3就是图像1的两个bit平面。
同理可以推断出,如果每个像素点由8个bit组成,则一副图像应该有8个bit平面。
bit平面分层可以用于图像的有损压缩,通过这种分析你可以发现,有些bit平面对图像的贡献是很小的,删除这一层的数据,人眼是无法分辨的,但这样就节约了空间以及传输的数据量。

9.直方图(histogram)处理

1.图像的直方图

图像的直方图实际上就是图像不同强度的像素点的概率分布图。
假设一副8bit图像(8bit图像指图像的每个像素点用8bit长度的数据表示,共可以表示0~255,共计256个强度)有M*N个像素点。
令n255表示强度的255的点,在图像中的数量,则此图像强度为255的概率可根据如下公式计算:

P255=n255MN

同理可以计算出P0~P255的值,然后以强度为x轴,概率为y轴绘制的直方图,就是此图像的直方图。
通过图像的直方图可以看出以下几点结论:
1. 图像亮度较暗,则直方图集中在x轴的左侧;
2. 图像亮度较亮,则直方图集中在x轴的右侧;
3. 图像对比度较低,则直方图集中在某个很小的范围内;
4. 图像对比度较高,则直方图均匀分布在整个x轴。

2.直方图均衡

根据上一节的结论4,“图像对比度较高,则直方图均匀分布在整个x轴”。我们可以将一个对比度较低的图像,通过某种变化,使其直方图均匀分布,这样就可以增进对比度。这其中最简单的算法是“直方图均衡”。
s=T(r),其中s表示转换后的像素点强度,r表示原像素点强度。如果T(r)是连续可微函数,则有如下结论:

Ps(s)=Pr(r)drds
,其中Ps()Pr()分别是sr的概率分布函数。这数学结论很重要,但我并没有亲自推导过。只需要记住T(r)必须是“连续可微”函数。
基于以上的结论,我们可以构造如下的转换函数:
T(r)=(N1)r0Pr(w)dw
其中N表示像素点可能的取值数量,比如8bit图像,N=28=256
基于以上构造的转换函数,我们很容易计算出
Ps(s)=1N1
,即转换后,所有的像素点的概率分布为常数,对比度最大。

3.自由选择输出图像的概率密度函数

上一节中构造的转换函数,转换后图像的概率密度是常数。这在多数情况下已经足够好,但有时我们希望自由选择输出图像的概率密度函数。
下面直接介绍算法:
1. 令变换后的概率密度函数为Pz(z);
2. 令s1=(N1)z0Pz(w)dws2=(N1)r0Pr(w)dw
3. 由于Pr(r)r是输入图像的数据,是已知的,我们可以计算出{(s2,r)}的对应关系表;
4. 由于Pz(z)是我们选定的,z的取值范围是[0,2n1],所以可以得到{(s1,z)}的对应关系表;
5. 基于以上几点可知,当有一个输入r,便可以查询到一个s2,然后选择|s2s1|最小的s1,再根据这个s1得到z,即完成了变换。

图像处理学习之路

阅读数 15747

图像处理入门必看

阅读数 12569

没有更多推荐了,返回首页