2016-07-01 15:42:06 lpsl1882 阅读数 8029
  • 海思平台ISP与图像的IQ调试-第9季

    本课程讲解sensor直接采集的图像都有各种不理想性,因此在编码前都会经过一个软件方式处理,这个处理就叫ISP,图像的IQ调试就是研究这些处理算法和实现的。常见的IQ调试技术如:线性纠正、噪声去除、黑电平校正、坏点去除、颜色插补、Gamma 校正、RGB2YUV 转换、主动白平衡处理、主动曝光控制、AE评估等。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35xx系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    74 人正在学习 去看看 朱有鹏

彩色图像边缘检测

回顾灰度图像边缘检测,我们一般求出图像的梯度:

fx(x,y)=f(x+1,y)f(x,y)fy(x,y)=f(x,y+1)f(x,y)
或者求出图像的二阶差分:
Δfx(x,y)=f(x+1,y)+f(x1,y)2f(x,y)Δfy(x,y)=f(x,y+1)+f(x,y1)2f(x,y)
然后根据梯度和二阶差分的大小,以及最大变化率方向来寻找可能存在的图像边缘。

彩色图像的每个像素包含红绿蓝三个分量,这样每个像素可以由一个三维向量来表示。但是在进行图像边缘检测的时候,我们遇到一个问题,那就是向量并不存在梯度概念。单独对每个颜色分量进行边缘检测,其梯度不能反映图像整体彩色的差异变化。

一个广为使用的彩色图像梯度方法来自Zenzo[1986]的论文

u⃗ =Rxr⃗ +Gxg⃗ +Bxb⃗ 
v⃗ =Ryr⃗ +Gyg⃗ +Byb⃗ 

其中R,G,B是图像分量,r⃗ ,g⃗ ,b⃗ 等是单位向量,表征颜色分量坐标。然后继续计算有:
gxx=u⃗ Tu⃗ =Rx2+Gx2+Bx2
gyy=v⃗ Tv⃗ =Ry2+Gy2+By2
gxy=u⃗ Tv⃗ =RxRy+GxGy+BxBy

注意这里执行的是向量乘法,而不是进一步求导。梯度方向为:
θ=12arctan[2gxy(gxxgyy)]
由梯度方向才能计算梯度:
F(θ)={12[(gxx+gyy)+(gxxgyy)cos2θ+2gxysin2θ]}12

matlab上自带的edge函数目前没发现可以对彩色图像直接进行边缘检测的方法,C++的openCV库也没有发现。上述工具一般会对彩色图像进行灰度化再执行边缘检测,效果也不算差。

Zenzo, A Note on the Gradient of a Multi-Image,º Computer[C]// Vision Graphics Image Processing. 1986.

2018-08-29 00:37:44 hfutdog 阅读数 8773
  • 海思平台ISP与图像的IQ调试-第9季

    本课程讲解sensor直接采集的图像都有各种不理想性,因此在编码前都会经过一个软件方式处理,这个处理就叫ISP,图像的IQ调试就是研究这些处理算法和实现的。常见的IQ调试技术如:线性纠正、噪声去除、黑电平校正、坏点去除、颜色插补、Gamma 校正、RGB2YUV 转换、主动白平衡处理、主动曝光控制、AE评估等。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35xx系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    74 人正在学习 去看看 朱有鹏

最近开始接触图像处理,接到的首个任务就是将实验室用颜色标记好的数据再在原图上按不同颜色框出来,以在模型预测阶段检查预测效果。下面使用一张摇滚乐队Halestrom的图片进行说明。

首先,我拿到的原图如下图所示:

图1

我们将原始图片按照人、地板、墙三种元素进行标记,得到下图:

图2

将上述两张图片输入我们的模型,那么模型能够做到给出一张新的图片它就能够输出一张按颜色分类标记元素的图片。我们这里要做的是,将按颜色分类标记元素的区块转换为线框绘制在原始图片上,便于检测预测效果,具体需要得到的图片如下图所示:

图3

这就需要我们根据颜色分辨出图2中的区域,然后在原图上对其描框,具体实现可以参考以下代码:

"""功能:检测图像颜色按区块划分边框"""

import numpy as np
import cv2
import os


def detect_color(img_path, mark_img_path):
    """检测一张图片中的不同颜色区域"""
    image = cv2.imread(img_path)  # 加载图片
    # 定义颜色范围,这里可以根据自己的需求定义,注意这里颜色定义的顺序是BGR
    boundaries = [
        ([0, 0, 255], [0, 0, 255]),  # 红色
        ([0, 255, 0], [0, 255, 0]),  # 绿色
        ([255, 0, 0], [255, 0, 0])  # 蓝色
    ]

    # 遍历颜色范围
    for (lower, upper) in boundaries:
        # 由颜色范围创建NumPy数组
        lower = np.array(lower, dtype="uint8")
        upper = np.array(upper, dtype="uint8")

        # 根据特定颜色范围创建mask
        mask = cv2.inRange(image, lower, upper)
        output = cv2.bitwise_and(image, image, mask=mask)

        mark_zone_with_color(output, mark_img_path, lower)


def mark_zone_with_color(src_img, mark_img, mark_color):
    """根据颜色在原始图像上标记区域"""
    # 转灰度图片
    gray = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)

    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)  # ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) 则只能绘制出平地轮廓

    # 轮廓检测
    _, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

    newImg = cv2.imread(mark_img)
    newImg = cv2.resize(newImg, (512, 512))
    # 画图
    for i in range(len(contours)-1):
        cv2.drawContours(image=newImg, contours=contours[i+1], contourIdx=-1, color=tuple(mark_color.tolist()), thickness=2, maxLevel=1, lineType=8)

    cv2.imwrite(mark_img, newImg)


def batch_marker(src_img_dir, draw_contours_img_dir):
    """
    批处理需要标记的图像,注意这里默认原始图像和标记了颜色区块的图像
    是同名的,但是放在不同的文件夹里。
    """
    src_imgs = get_filenames_in_dir(src_img_dir)
    dc_imgs = get_filenames_in_dir(draw_contours_img_dir)

    for src in src_imgs:
        for dc in dc_imgs:
            if src == dc:
                detect_color(os.path.join(src_img_dir, src), os.path.join(draw_contours_img_dir, dc))


def get_filenames_in_dir(dir):
    """获取一个目录下所有文件的文件名"""
    for root, dirs, files in os.walk(dir):
        return files

使用时直接调用detect_color函数就可以了,第一个参数是像图2一样的图片路径,第二个参数是像图1一样的原始图片的路径。

opencv是经常会被使用到的图像处理库,下面介绍一下上述代码中使用到的几个关键函数。

inRange(src, lowerb, upperb[, dst]) -> dst

参数含义:src:输入源图像。

         lowrb:需要检测图像像素范围的下阈值。

         upperb:需要检测图像像素范围的上阈值。

         dst:输出图像数组,形状和输入图像src一致,CV_8U类型。

功能:将图像中的像素在lowrb和upperrb范围内的设置成255,范围之外的设置成0以输出。
cvtColor(src, code[, dst[, dstCn]]) -> dst

参数含义:src:输入源图像。

         code:图像编码方式或者是颜色空间。

功能:将图像从一个颜色空间转换到另外一个颜色空间,通常是将BGR图像转换为灰度图。
threshold(src, thresh, maxval, type[, dst]) -> retval, dst

参数含义:src:输入源图像。

         thresh:阈值。

         maxval:用于THRESH_BINARY和THRESH_BINARY_INV阈值处理的最大值。

         type:阈值类型。

         dst:与输入源图像src具有相同大小、类型、通道数的图像。

功能:通常用于从灰度图中获取二进制图像或者用于去除图像噪声(即去除太大或太小的像素)。
findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> image, contours, hierarchy

参数含义:image:输入源图像,一个8位单通道图像,非零像素被视为1,零像素保持为0,即二进制图像。如果 
         mode等于RETR_CCOMP或RETR_FLOODFILL,则输入也可以是32位整数图像标签。

         mode:轮廓检索模式。

         method:轮廓逼近方法。

         contours:检测到的轮廓,每个轮廓被存为点的矢量。

         hierarchy:可选的输出矢量。包含图像的拓扑信息,具有和轮廓相同数量的元素。

         offset:每个轮廓点的可选偏移量。

功能:从二进制图像中检索轮廓。轮廓是用于形状分析和物体检测识别的常用工具。
drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) -> image

参数含义:image:目标图片。

         contours:所有输入轮廓,每个轮廓都被存储为点的矢量。

         contourIdx:要绘制的轮廓的索引,如果为-1则绘制所有的轮廓。

         color:轮廓绘制采用的颜色。

         thickness:要绘制轮廓的线条的粗细,如果是负的,则绘制轮廓内线条。

         lineType:线路连接。

         hierarchy:需要绘制的轮廓的层次信息。仅当只需要绘制部分轮廓时这个参数才有用。

         maxLevel:绘制轮廓的最大级别。如果为0,则绘制指定的轮廓;如果为1,则绘制所有轮廓(含嵌套 
         轮廓);如果是2,那么绘制所有轮廓,包括嵌套轮廓,嵌套的嵌套轮廓等等,但只有当有可用的层次 
         结构时参数才有效。

         offset:可选的轮廓位移参数。

功能:绘制轮廓或填充轮廓。

好了,整个代码其实比较简单,主要是调用了上面几个函数。如果朋友们还有什么函数不清楚的可以自行查看文档。若对上述代码有疑问或建议的可以评论留言给我,以使我不断给大家提供更好的代码及博文。在此提前谢过,感谢朋友们的阅读!

 

2015-12-26 10:30:38 wp1603710463 阅读数 1556
  • 海思平台ISP与图像的IQ调试-第9季

    本课程讲解sensor直接采集的图像都有各种不理想性,因此在编码前都会经过一个软件方式处理,这个处理就叫ISP,图像的IQ调试就是研究这些处理算法和实现的。常见的IQ调试技术如:线性纠正、噪声去除、黑电平校正、坏点去除、颜色插补、Gamma 校正、RGB2YUV 转换、主动白平衡处理、主动曝光控制、AE评估等。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35xx系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    74 人正在学习 去看看 朱有鹏

                 Matlab图像处理函数汇总

1.图像的变换:

   ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:
     i=imread('104_8.tif');
     j=fft2(i);</span>

   ② ifft2: ifft2函数用于数字图像的二维傅立叶反变换,如:

     i=imread('104_8.tif');
     j=fft2(i);
     k=ifft2(j);</span>

2.模拟噪声生成函数和预定义滤波器:

   ① imnoise:用于对图像生成模拟噪声,如:

     i=imread('104_8.tif');
     j=imnoise(i,'gaussian',0,0.02); %模拟高斯噪声</span>

   ② fspecial:用于产生预定义滤波器,如:

     h=fspecial('sobel');     %sobel水平边缘增强滤波器
     h=fspecial('gaussian');   %高斯低通滤波器
     h=fspecial('laplacian');   %拉普拉斯滤波器
     h=fspecial('log');         %高斯拉普拉斯(LoG)滤波器
     h=fspecial('average');     %均值滤波器</span>

3.图像的增强:

   ①直方图:imhist函数用于数字图像的直方图显示,如:

    i=imread('104_8.tif');
    imhist(i);</span>

   ②直方图均化:histeq函数用于数字图像的直方图均化,如:

     i=imread('104_8.tif');
     j=histeq(i);</span>

   ③对比度调整:imadjust函数用于数字图像的对比度调整,如:

          i=imread('104_8.tif');
          j=imadjust(i,[0.3,0.7],[]);</span></span>

   ④对数变换:log函数用于数字图像的对数变换,如:

     i=imread('104_8.tif');
     j=double(i);
     k=log(j);</span>

   ⑤基于卷积的图像滤波函数:filter2函数用于图像滤波,如:

     i=imread('104_8.tif');
     h=[1,2,1;0,0,0;-1,-2,-1];
     j=filter2(h,i);</span>

   ⑥线性滤波:利用二维卷积conv2滤波, 如:

      i=imread('104_8.tif');
      h=[1,1,1;1,1,1;1,1,1];
      h=h/9;
      j=conv2(i,h);</span>
   ⑦中值滤波:medfilt2函数用于图像的中值滤波,如:

     i=imread('104_8.tif');
     j=medfilt2(i);</span>

   ⑧锐化

   (1)利用Sobel算子锐化图像, 如:

    i=imread('104_8.tif');
    h=[1,2,1;0,0,0;-1,-2,-1];   %Sobel算子
    j=filter2(h,i);</span>
   (2)利用拉氏算子锐化图像, 如:

    i=imread('104_8.tif');
    j=double(i);
    h=[0,1,0;1,-4,0;0,1,0];  %拉氏算子
    k=conv2(j,h,'same');
    m=j-k;</span>

4.图像边缘检测:

   ① sobel算子 如:

    i = imread('104_8.tif');
    j = edge(i,'sobel',thresh);</span>
   ② prewitt算子 如:

    i = imread('104_8.tif');
    j = edge(i,'prewitt',thresh);</span>
   ③roberts算子  如:

    i=imread('104_8.tif');
    j =edge(i,'roberts',thresh);</span>

   ④log算子  如:

   i=imread('104_8.tif');
    j =edge(i,'log',thresh);</span>

   ⑤canny算子 如:

    i=imread('104_8.tif');
    j =edge(i,'canny',thresh);</span>

   ⑥Zero-Cross算子 如:

    i=imread('104_8.tif');
    j =edge(i,'zerocross',thresh);</span>

5.形态学图像处理:

   ①膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:

    a=imread('104_7.tif');  %输入二值图像
    b=[0 1 0;1 1 1;01 0];
    c=imdilate(a,b);</span>
     ②腐蚀:函数imerode执行腐蚀,如:

    a=imread('104_7.tif');   %输入二值图像
    b=strel('disk',1);
    c=imerode(a,b);</span>

   ③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:

   a=imread('104_8.tif');
   b=strel('square',2);
   c=imopen(a,b);</span>

   ④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:

   a=imread('104_8.tif');
    b=strel('square',2);
    c=imclose(a,b);</span>

6.改变MATLAB背景颜色:

% 不使用MATLAB首选项中的配色
com.mathworks.services.Prefs.setBooleanPref('ColorsUseSystem',0);
% 指定背景颜色
com.mathworks.services.Prefs.setColorPref('ColorsBackground',java.awt.Color.green);
com.mathworks.services.ColorPrefs.notifyColorListeners('ColorsBackground');
cmdWinDoc = com.mathworks.mde.cmdwin.CmdWinDocument.getInstance;
listeners = cmdWinDoc.getDocumentListeners;
ii=1;
% 循环的方式,找到jTextArea的实例,然后设置颜色
while true
    jTextArea = listeners(ii);
    if isa(jTextArea,'javax.swing.JTextArea$AccessibleJTextArea')
        break
    end
    ii=ii+1;
end
% 可以使用下面任意一种方法设置背景色
jTextArea.setBackground(java.awt.Color.green);
jTextArea.setBackground(java.awt.Color(0,1,0));
set(jTextArea,'Background','green');
set(jTextArea,'Background',[0,1,0]);</span>

7.小波变换:

   ① 使用小波工具箱:

    wfilters:得到分解滤波器;

    wavedec2:分解等级函数,得到变换系数;

    waverec2:得到重构滤波器。

   ② 不使用小波工具箱:

    wavefiler:代替wfilters;

    wavefast:代替wavedec2;

    wavework:处理C(有三个使用wavework功能类似函数:wavecut,wavecopy,wavepaste);

    wave2gray:显示变换系数;

    waveback:代替waverec2。



2018-08-08 09:56:56 su1041168096 阅读数 2021
  • 海思平台ISP与图像的IQ调试-第9季

    本课程讲解sensor直接采集的图像都有各种不理想性,因此在编码前都会经过一个软件方式处理,这个处理就叫ISP,图像的IQ调试就是研究这些处理算法和实现的。常见的IQ调试技术如:线性纠正、噪声去除、黑电平校正、坏点去除、颜色插补、Gamma 校正、RGB2YUV 转换、主动白平衡处理、主动曝光控制、AE评估等。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35xx系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    74 人正在学习 去看看 朱有鹏

下面论述FPGA在图像处理领域中的地位:
图像处理,它是一个非常广义的概念,它包含图像增强,图像复原,图像重建,图像分析,模式识别,计算机视觉等N多个应用方向。这些应用技术有许多在本质上是相通的,但是不同应用领域的关注点往往是不同的。 从网络上的开源情况来看,FPGA在图像处理方面的主要应用一直处于图像的预处理阶段。
什么叫图像的预处理?例如图像的畸变校正,滤波器处理,边缘检测、颜色检测和阈值处理等。这些预处理都有一些共同的特征,算法较为简单,操作重复性强等。但是,除了预处理,FPGA就不能做点别的吗?有的哦,图像处理类似一个三层金字塔,分为底层,中间层,高层。
这里写图片描述
图像处理金字塔有三层,分别针对的是像素级、特征级和目标级。一个成熟的图像处理应用应该同时涵盖这三层。
在像素层,我们可以对图像做一些变换,目的是增强图像的有用信息,同时抑制任何不相关的信息(如噪声)。然后通过对预处理后的图像做分割操作实现图像从像素级到特征级的过度,分割操作可以理解为检测图像中具有一些共同性质的区域。针对这些区域,依据一个或多个分类法则,将区域归类到一些预先设定的特征类型中作为后期识别的数据集。此时的数据已经不仅仅是图像了,其中包含了丰富的特征信息,如物体的位置信息等。在金字塔高层,依靠获取的特征,如有必要还可以将这些特征集作为学习的训练集来创建专用的模型,借助模型来实现识别,进而用来对实时采集的图像进行描述。

一言以蔽之,FPGA在图像处理中的应用尚处于未成熟状态,网络上可供借鉴的大多是预处理方面的资源,而关于使用FPGA去做特征和目标层次的处理还是十分复杂的,大多数高层次的应用还处于研发阶段,具体说吧,主要是高校和大公司会去做这方面的研究与应用,而且因为是研发阶段,所以使用的FPGA套件是十分昂贵的,不计成本。显然这种实现方式是不符合商用的。因此,当你真正用一个全新的“较低廉”的“高效”的硬件方式实现了一个效果十分出色的图像处理算法,那么你当真是非常了不起的了。

用FPGA做图像处理往往需要考虑除算法之外的更多问题,如时序约束,存储器带宽不足,资源不足,计算问题,这些问题都制约着FPGA在图像处理领域的发展。

FPGA主要用于通信,IC验证,高速接口,高速总线等。对于成熟的高速电路,比如路由芯片,交换机芯片一般内部结构比较稳定,使用专用IC。FPGA主要用于需要频繁修改的高速数字电路,当专用功能的数字电路成熟,并且有一定量上的市场需求,就会放弃FPGA,转而流片生产专用功能的IC。

2020-03-10 18:05:38 qq_43001748 阅读数 30
  • 海思平台ISP与图像的IQ调试-第9季

    本课程讲解sensor直接采集的图像都有各种不理想性,因此在编码前都会经过一个软件方式处理,这个处理就叫ISP,图像的IQ调试就是研究这些处理算法和实现的。常见的IQ调试技术如:线性纠正、噪声去除、黑电平校正、坏点去除、颜色插补、Gamma 校正、RGB2YUV 转换、主动白平衡处理、主动曝光控制、AE评估等。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35xx系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    74 人正在学习 去看看 朱有鹏

1)图像处理的分类:
数字图像处理领域,图像分为模拟图像和数字图像;(计算机处理的图像都是数字图像)
颜色图像分为:彩色图像,灰度图像,黑白图像
2)数字图像的产生:
数码相机直接拍摄可得;图像采集卡,扫描仪等数字化设备将模拟图像转化为数字图像
在这里插入图片描述
在这里插入图片描述
3)数字图像处理的研究内容
1.图像运算与变换
在这里插入图片描述
2.图像增强

在这里插入图片描述

3.图像复原

在这里插入图片描述

4.图像的锐化处理及边缘检测
在这里插入图片描述
5.图像分割
在这里插入图片描述
(通过阈值分割得到)
6.图像编码压缩
二.图像的表示方法
在这里插入图片描述
1)二进制图像
用二进制数组描述。1位是一个像素,0为黑色,1为白色。
一般用来描述文字或者图形,其占用空间少,但只能表示人物或者风景轮廓。
在这里插入图片描述

2)灰度图像(单色图像)
8位一个像素,0表示黑色,255表示白色,1~254表示不同深浅灰色。
在这里插入图片描述
3)RGB图像(真彩色图像)
3个大小相同的二维数组表示一个像素
R:红 G:绿 B:蓝
三个基本颜色可以合成任意颜色
在这里插入图片描述
4)索引图像

在这里插入图片描述

5)多帧图像
包含多福图像或帧的图像
在这里插入图片描述

三.图像的数据结构
1)矩阵
矩阵中一个元素表示图像的一个像素
矩阵描述灰度图像时,用灰度级(通常位8位)来描述
在这里插入图片描述

在这里插入图片描述

2)链码
在这里插入图片描述

3)拓扑结构
像素与它周围像素点的关系;
在这里插入图片描述
图一:4-邻域
图二:对角邻域
图三:8-邻域
在这里插入图片描述
图一:4-邻域联通
图二:8-邻域联通
4)关系结构
串描述(如链码)、
树描述

在这里插入图片描述

四.图像文件格式
每一个文件格式都包括:头文件和数据文件
1)BMP文件格式(占用内用大,不支持web)
支持RGB、索引颜色、灰度和位图颜色模式。
有两种类型:
设备相关位图(DDB)window3.0以前文件格式
设备无关位图(DIB)window3.0以后的文件格式
默认的文件扩展名是.BMP或.bmp
2)GIF文件格式
.gif
为数据流设计的一种传输格式,不作为文件的存储格式
几乎所有浏览器都支持
3)JPEG文件格式
.jpg使用了有损压缩算法,具有迄今为止最为复杂的文件结构和编码方式
4)TIFF文件格式
存储照片和艺术图
.tif或.tiff(扫描仪用)

数字图像处理 总结

阅读数 13468

06.OpenCV-图像处理

阅读数 60

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