2017-12-29 14:49:39 IT_job 阅读数 780

数字图像处理之前需要先进行图像数字化:图像数字化图像数字化是计算机处理图像之前的基本步骤,目的是把真实的图像转变成计算机能够接受的存储格式,数字化过程分为采样和量化两个步骤。

数字图像处理的框架大体分为如下8个部分

 

1.    图像变换

有时候,直接对图像进行处理会遇到一些困难,为了有效和快速地对图像进行处理和分析,需要将原定义在图像空间的图像以某种形式转换到另外的空间,利用空间的特有性质方便地进行一定的加工,最后再转换回图像空间以得到所需的效果。经过变换后的图像往往更有利于特征提取、增强、压缩和编码。

 

常用技术

1.卷积

2.梯度和Sobel导数

3.拉普拉斯变换

4.Canny算子

5.霍夫变换

6.重映射

7.几何操作:拉伸、收缩、扭曲和旋转

8.离散傅里叶变换(DFT)

9.离散余弦变换(DCT)

10.哈儿变换

11斜变换

 

2.    形态学图像处理

数学形态学是一门20世纪60年代发展起来的理论,用于分析和处理离散图像。它定义了一系列运算,用预先定义的形状元素探测图像,从而实现图像的转换。这个结构元素与像素领域的相交方式决定了运算的结果。

 

常用技术

1.平滑处理

2.膨胀与腐蚀

3.开启操作与闭合操作

4.检测边缘和角点

 

3.    图像边缘检测

边缘检测的目标是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反应了属性的重要事件和变化,包括:(1)深度上的不连续(2)表面方向的不连续(3)物质属性变化(4)场景照明变化。

 

常用技术

1.Sobel算子

2.Isotropic Sobel算子

3.Roberts算子

4.Prewitt算子

5.Laplacian算子

6.Canny算子

 

4.     图像增强和复原

利用数字图像处理技术可以将图像中感兴趣部分加以强调,对不感兴趣的部分予以抑制,强调后的部分对使用者更为清晰,甚至能给出一定的数量分析或不同颜色的表示。这种技术常称为图像增强。图像复原是通过图像滤波实现的。

 

常用技术

4.1空间域法

4.1.1点运算算法

4.1.1.1灰度级校正

4.1.1.2灰度变换(又叫对比度拉伸)

4.1.1.3直方图修正

 

4.1.2邻域去噪算法。

4.1.2.1图像平滑

4.1.2.1.1均值滤波

4.1.2.1.2中值滤波

4.1.2.1.3空域滤波

4.1.2.2锐化

4.1.2.2.1梯度算子法、

4.1.2.2.2二阶导数算子法、

4.1.2.2.3高通滤波、

4.1.2.2.4掩模匹配法

 

4.2频率域法

4.2.1理想低(高)通滤波器、

4.2.2巴特沃斯低(高)通滤波器、

4.2.3高斯低(高)通滤波器、

4.2.4指数滤波器

 

5 图像压缩编码

在满足一定保真度的要求下,对图像数据的进行变换、编码和压缩,去除多余数据减少表示数字图像时需要的数据量,以便于图像的存储和传输。即以较少的数据量有损或无损地表示原来的像素矩阵的技术,也称图像编码。

 

常用技术

5.1无损图像压缩方法

5.1.1行程长度编码

5.1.2熵编码法

5.1.3LZW算法

 

5.2有损压缩方法

5.2.1将色彩空间化减到图像中常用的颜色。

5.2.2色度抽样

5.2.3变换编码

5.2.4分形压缩

 

6.     图像分割

在计算机视觉理论中,图像分割、特征提取与目标识别构成了由低层到高层的三大任务.目标识别与特征提取都以图像分割作为基础 ,图像分割结果的好坏将直接影响到后续的特征提取与目标识别图像分割是将图像中有意义的特征或区域提取出来的过程.这些特征可以是图像的原始特征,如像素的灰度值、物体轮廓、颜色、反射特征和纹理等,也可以是空间频谱等,如直方图特征.图像分割的目的是把图像划分成若干互不相交的区域,使各区域具有一致性,而相邻区域间的属性特征有明显的差别

 

常用技术

6.1基于区域的图像分割

6.2基于边缘的图像分割

6.3边缘与区域相结合的图像分割

6.4基于数学形态学的图像分割

6.5基于模糊理论的图像分割

6.6基于神经网络的图像分割

6.7基于支持向量机的图像分割

6.8基于图论的图像分割

6.9基于免疫算法的图像分割

6.10基于粒度计算理论的图像分割

 

7.     图像特征提取与匹配

常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征

 

常用技术

7.1颜色特征

7.1.1颜色直方图

7.1.2颜色集

7.1.3颜色矩

7.1.4颜色聚合向量

 

7.2纹理特征

7.2.1灰度共生矩阵

7.2.2几何法

7.2.3模型法

7.2.4信号处理法

 

7.3形状特征

7.3.1边界特征法

7.3.2傅里叶形状描述符法

7.3.3几何参数法

 

7.4空间关系特征

7.4.1基于模型的姿态估计方法

7.4.2基于学习的姿态估计方法

 

8.     图像分类(识别)

根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法

 

常用技术

8.1模版比对:关系结构匹配、特定理论工具的匹配、基于灰度信息匹配、基于亚像元匹配、基于内容特征匹配

 

8.2统计模式识别方法:判别函数法,k近邻分类法,非线性映射法,特征分析法,主因子分析法

 

8.3人工神经网络模式识别:人工神经网络区别于其他识别方法的最大特点是它对待识别的对象不要求有太多的分析与了解,具有一定的智能化处理的特点

 

8.4句法结构模式识别:又称结构方法或语言学方法。其基本思想是把一个模式描述为较简单的子模式的组合,子模式又可描述为更简单的子模式的组合,最终得到一个树形的结构描述,在底层的最简单的子模式称为模式基元

 

参考

http://blog.csdn.net/hitwengqi/article/details/8292675

http://blog.csdn.net/it_job/article/details/78837414

期刊 数字图像处理技术的研究进展

图像分割的新理论和新方法

百度百科

2015-04-16 14:26:48 twaver 阅读数 2275
数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。常用的图像处理方法有图像增强、复原、编码、压缩等,数字图像处理应用领域非常广泛。具体关于数字图像处理的介绍可以参考书籍《冈萨雷斯 数字图像处理》。
TWaver作为可视化的利器,如果在展示网元的时候,融入图像处理技术,将会对网元图标的显示增加了灵活性,是一件非常有意思的事情。那么我们不妨来试试,如何将图像处理技术融入进来。

首先我们重写一个网元CNode,定制用来处理图像的特殊网元。


public class CNode extends Node{
public function CNode(id:Object = null){
super(id);
}
override public function get elementUIClass():Class{
return CNodeUI;
}
}

public class CNodeUI extends NodeUI{
private var currentImageAsset:IImageAsset = null;
private var currentComponent:DisplayObject = null;
public function CNodeUI(network:Network, node:Node){
super(network,node);
}
override protected function drawDefaultContent(graphics:Graphics):void{
//此处处理图像,并绘制图像
}
}

这样一个在TWaver中处理图像的框架就搭建完成了,只要在上面的drawDefaultContent方法中对图像处理并返回绘制,即可实现图像的处理。
那么我们先来看看图像的常见处理方法,在此说明,选择一张美女图片作为图像处理的素材。
1.图像二值化:将图像视为二维数组,遍历二维数组,并处理单个像素的值。实现灰度化,需要定义一个颜色(或灰度值)阈值,将图像中灰度值按照阈值分开。

private function doBinary(bd:BitmapData):BitmapData {
var rect:Rectangle = bd.rect;
for(var i:int=rect.x; i<rect.x+rect.width;i++) {
for(var j:int=rect.y; j<rect.y+rect.height;j++) {
var color:uint = bd.getPixel(i,j);
if(color>0x605555){
bd.setPixel(i,j,0xffffff);
}else{
bd.setPixel(i,j,0x00000);
}
}
}
return bd;
}

效果如下:
binaryzation
2.图像灰度化
灰度化的计算公式如下:Gary(i,j)=0.299*R(i,j)+0.587*G(i,j)+0.114*B(i,j);

private function doGray(bd:BitmapData):BitmapData {
var rect:Rectangle = bd.rect;
for(var i:int=rect.x; i for(var j:int=rect.y; j var color = bd.getPixel(i,j);
var rgb:Array = ColorUtils.CombinationToRGB(color);
var gray = (int)(rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114);
bd.setPixel(i,j,ColorUtils.RGBToCombination([gray,gray,gray]));
}
}
return bd;
}

grayImage

3.图像旋转

private function doRotate(bd:BitmapData):BitmapData{
var rect:Rectangle = bd.rect;
var m:Matrix = new Matrix();
m.rotate(Math.PI/3);
m.translate(rect.height,0);
var bmp:BitmapData = new BitmapData(bd.height, bd.width,false);
bmp.draw(bd,m);
return bmp;
}

图像旋转60度
rotate01
图像先二值化,再旋转60度
rotate02
图像处理的算法很多,在这先抛砖引玉,后面可以支持更新比较复杂的图像处理结果。
有人会问,这样处理有什么意义呢,具有什么实际应用价值吗?
答案是肯定的,任何一种技术,只要用对了地方,就会体现它的价值,那么图像处理技术与TWaver相结合能擦出什么火花呢?
看下面的demo。
在网元发生告警的时候,TWaver传统方法是通过混合网元图片颜色和告警颜色,得到效果如下:
alarmColor
那么使用图像处理技术可以得到这样的渲染结果:
innerColor
怎么样,效果还不错吧,需要抓紧联系我们吧,邮件:jeff.fu@servasoft.com

2018-06-18 21:42:30 qq_41174320 阅读数 5685

一、图像处理预备知识

1、图像处理(image processing)

用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。

在计算机中,按照颜色和灰度的多少可以将图像分为二值图像、灰度图像、索引图像和真彩色RGB图像四种基本类型。

2、图像处理常用方法

1)图像变换

为了用正交函数或正交矩阵表示图像而对原图像所作的二维线性可逆变换。一般称原始图像为空间域图像,称变换后的图像为转换域图像,转换域图像可反变换为空间域图像。

它可以分为四个部分:空域变换等维度算法,空域变换变维度算法,值域变换等维度算法和值域变换变维度算法。其中空域变换主要指图像在几何上的变换,而值域变换主要指图像在像素值上的变换。等维度变换是在相同的维度空间中,而变维度变换是在不同的维度空间中,例如二维到三维,灰度空间到彩色空间。

常用的有三种变换方法:傅里叶变换、沃尔什-阿达玛变换、离散卡夫纳-勒维变换。这里只讲傅里叶变换。

2)图像增强和复原

图像增强不增加图片信息,只对感兴趣的特征进行强调突出,增加辨别能力。根据人的主观评定,具有一定的人为畸变。一般通过空间域处理和频率域处理两种方法。

图像复原技术的主要目的是以预先确定的目标来改善因散焦、像物相对运动、成像器材的图固有缺陷和外部干扰导致退化的图像。

图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强主要是一个主观过程,而图像复原则大部分是一个客观的过程。

3)图像压缩

图像压缩是一种减少描绘一幅图像所需数据量的技术和科学,它是数字图像处理领域中最有用和商业上最成功的技术之一。

图像压缩既可以是无损压缩,没有信息损失;也可以是有损压缩,不能通过解压恢复原图,牺牲准确度换来压缩能力的增加。

4)图像分割

图像分割是数字图像处理中的关键技术之一。分割将图像细分为构成它的子区域或物体。细分程度取决于要解决的问题。即将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。

5)图像描述

图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。

6)图像识别

图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。

二、MATLAB简介

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

三、MATLAB图像处理代码

1、图像读取及保存

MATLAB的基本数据单位是矩阵,一幅图像可定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,而在任何一对空间坐标(x,y)处的幅值f称为图像在该点处的强度或灰度。当x,y和灰度值f是有限的离散数值时,我们称该图像为数字图像。在MATLAB中,数字图像就是一个个矩阵。

1)图像读取

函数:imread(‘图像文件’) :读入指定的图像文件到内存

举例:

InImg=imread('d:\photo\yng.jpg'); %读取D盘photo文件夹中命名为yng的.jpg格式的图像存储到InImg矩阵中

2)图像保存

函数:imwrite(OutImg, ‘图像文件’)输出内存中图像数据到文件

举例:

imwrite(OutImg,'d:\photo\yn_ln.jpg'); %将OutImg矩阵表示的图像存储到电脑D盘photo文件夹中,并命名为yn_ln的.jpg格式的图像。

3)图像显示

函数:imshow(ImgData) 将图像文件显示到屏幕
subplot(行数,列数,区域索引); 

举例:

subplot(1,1,1);imshow(InImg); %将InImg图像文件显示到屏幕上指定位置

4)图像转换

I=rgb2gray(rgbImg)将彩色图像转换为灰度图像,rgbImg为彩色图像
bw=im2bw(Img,level): 将灰度图像转换为二值图像,Img为灰度图像,level为0~1的灰度级阈值;


原图


灰度图像                                                         二值图像

2、图像增强

1)数字图像灰度增强

J=imadjust(I,[low high], [bottom top],gamma): 对灰度图像进行直接灰度变换;I为增强前灰度图像,J为增强后的灰度图像,[low high]增强前灰度级范围,[bottom top]增强后灰度级范围

举例:

clear;
InImg=imread('d:\photo\yng.jpg');
I=rgb2gray(InImg);
bw1=im2bw(I,0.8);
J=imadjust(I,[0.1 0.6], [0 1],0.5);
bw2=im2bw(J,0.8);
bw2=medfilt2(bw2);
subplot(1,2,1);imshow(bw1);
subplot(1,2,2);imshow(bw2);


增强前                                                                                              增强后

2)数字图像空域滤波

S=medfilt2(J): 对图像进行中值滤波
举例:

M=0;V=0.01;
J1=imnoise(I, 'gaussian',M,V);
S=medfilt2(J1);
subplot(1, 2, 1); imshow(J1);
subplot(1, 2, 2); imshow(S);

高斯噪声                                                                                        中值滤波

3)数字图像频域滤波

F=fft2(I): 2D 傅里叶正变换

Pha=angle(F): 计算相位谱

R= abs(F): 计算功率谱
F1=real(F): 获得傅里叶变换实部分量
F2=imag(F): 获得傅里叶变换虚部分量
fftshift(F): 移动傅里叶频谱中心至零频率

I=ifft2(F): 2D 傅里叶逆变换

举例:(1)

I=BWBand(21,31);
F=fft2(I);                        %傅里叶正变换
F=fftshift(F);
L=abs(F);
L= mat2gray(L);
I3=imrotate(BWBand(21, 31),30);
F3=fft2(I3);
F3=fftshift(F3);
L3=abs(F3);
L3= mat2gray(L3);
subplot(141); imshow(I);
title('原图');
subplot(142); imshow(I3);
title('旋转30度图');
subplot(143); imshow(L); 
title('功率谱图');
subplot(144); imshow(L3);

title('旋转30度功率谱图');


(2)
InImg=imread('d:\photo\ying.jpg');
subplot(2, 2, 1); imshow(InImg); 
title('原彩色图');
I=rgb2gray(InImg);
J1=imnoise(I, 'salt & pepper',0.01);
subplot(2, 2, 2); imshow(J1); 
title('椒盐噪声污染图');
[f1, f2]=freqspace([199 200],'meshgrid');        %产生等间隔采样的频率响应
R=sqrt(f1.^2+ f2.^2);                   %计算功率谱
Hd=ones([199 200]);
Hd(R>0.5)=0;                                   %产生理想的带通滤波器,频率带宽[0.1 0.5]
win= fspecial('gaussian',[199 200],2); %采用高斯函数生成同样大小的窗函数
win= win./max(win(:));                       %窗口函数归一化
H=fwind2(Hd,win);                           %利用窗口函数产生实际的带通滤波器 
subplot(2, 2, 3); freqz2(H);
ff= imfilter (J1,H);
subplot(2, 2, 4); imshow(ff); 


3、图像复原

图像滤波:
J = WIENER2(I,[M N]): 对灰度图像实施维纳自适应滤波 ,[M N]像素领域大小
C=conv2(A,B) : 计算矩阵 A B 的卷积

举例:

InImg=imread('d:\photo\yng.jpg');
I=rgb2gray(InImg);
J1=imnoise(I, 'gaussian');
B1=[0 0.2 0;0.2 0.2 0.2; 0 0.2 0];   %平滑滤波器
H = fspecial('average',[5 5]);
Blurred1 = imfilter (J1,H);
H = fspecial('gaussian',[5 5]);
Blurred2 = imfilter (J1,H);
K = wiener2(J1,[5 5]);
subplot(1, 5, 1); imshow(J1) ; %显示噪声图像
title('高斯噪声图像');
subplot(1, 5, 2); imshow(Blurred1) ; %显示均值滤波图像
title('均值滤波图像');
subplot(1, 5, 3); imshow(Blurred2) ; % 显示高斯滤波图像
title('高斯滤波图像');
subplot(1, 5, 4); imshow(K);% 显示维纳滤波器滤波图像
title('维纳滤波器滤波图像');
C1=conv2(J1,B1, 'same'); %对加噪后的图像平滑滤波
C1=mat2gray(C1); %将矩阵转换为灰度图像
subplot(1, 5, 5); imshow(C1);% 显示平滑图像
title('平滑图像');


4、图像压缩

哈夫曼编码:无损压缩

步骤:1)缩减信源 2)尽可能少的调动信源符号排序 3)规定大概率事件编码

 clear 
 close all;  %定义HufData/Len为全局变量的结构体 
 global HufData; 
 global Len;  
 disp('计算机正在准备输出霍夫曼编码结果,请耐心等待……'); %原始码字的灰度 
a=imread('d:/photo/hua.jpg'); 
a=rgb2gray(a);
 figure; 
 subplot(1,2,1); imshow(a);
 %取消坐标轴和边框 
 axis off 
 box off  
 title('Tokyo Towers','fontsize',13); 
 subplot(1,2,2); 
 axis off 
 box off 
 imhist(a);  
 title('图像灰度直方图','fontsize',13);%图像的灰度统计 
 GrayStatistics=imhist(a); 
 GrayStatistics=GrayStatistics'; 
GrayRatioo=GrayStatistics/sum(GrayStatistics); 
GrayRatioNO=find(GrayRatioo~=0);
GrayRatioyes=find(GrayRatioo==0);
Len=length(GrayRatioNO);  %初始化灰度集,防止系统随即赋予其垃圾值 
GrayRatio=ones(1,Len); 
for i=1:Len  
    GrayRatio(i)=GrayRatioo(i);  
end
GrayRatio=abs(sort(-GrayRatio)); 
for i=1:Len  
    HufData(i).value=GrayRatio(i); %将图像灰度概率赋予结构体 
end  % 霍夫曼编码/霍夫曼编码 


HuffmanCode(Len); %输出码字 
lavg1=0;
for i=1:Len  
    tmpData=HufData(i).code
    str='';  
    for j=1:length(tmpData) ; 
         str=strcat(str,num2str(tmpData(j))); 
         disp(strcat('a','= ',str)); 
    end
       len1=length(tmpData) ;
       lavg1=lavg1+GrayRatio(1,i)*len1;
        
end
ratio_delet=8/lavg1;
 str='';
 str=strcat(str,num2str(ratio_delet)); 

 disp(strcat('压缩率','= ',str)) 


5、图像分割(边缘提取)

1)图像几何纠正、边缘检测 

B=imresize(A,m,type): 图像大小调整

B=imrotate(A,angle,method): 图像旋转调整

最近邻插值法:将变换后的图像中的原像素点最邻近像素的灰度值赋给原像素点的方法
双线性插值法:
核心思想是在两个方向分别进行一次线性插值。

举例:

InImg=imread('d:\photo\tail.bmp');
I=rgb2gray(InImg);
B1=imresize(I,1.5, 'nearest');
B2=imresize(I,1.5, 'bilinear');
C1= imrotate (I,45, 'nearest');
C2= imrotate (I,45, 'bilinear');
subplot(231);imshow(I) ;%显示原始图像于
title('原始图像');
subplot(232); imshow(B1) ;%显示调整图像(最近邻插值)
title('最近邻插值图像');
subplot(233); imshow(B2) ;% 显示调整图像(双线性插值)
title('双线性插值图像');
subplot(234); imshow(C1);% 显示旋转图像(最近邻插值)
title('旋转最近邻插值图像');
subplot(235); imshow(C2);% 显示旋转图像(双线性插值)
title('旋转双线性插值');


2)边缘提取

BW=edge(I,method,thresh): 检测灰度图像的边缘

举例:

InImg=imread('d:\photo\ying.jpg');
I=rgb2gray(InImg);
BW1= edge (I, 'sobel',0.1);%sobel边缘检测器
BW2= edge (I, 'prewitt',0.1);%prewitt边缘检测器
BW3= edge (I, 'roberts',0.1);%roberts边缘检测器
BW4= edge (I, 'log',0.01,2.0);%log边缘检测器
subplot(221); imshow(BW1) ;% 显示边缘图像
title('sobel边缘图像');
subplot(222); imshow(BW2) ;%显示边缘图像
title('prewitt边缘图像');
subplot(223); imshow(BW3) ;% 显示边缘图像
title('roberts边缘图像');
subplot(224); imshow(BW4) ;% 显示边缘图像
title('log边缘图像');




边缘提取

2018-06-03 11:29:45 u011046042 阅读数 5757

做了几年的图像处理,可以对一些使用的方法进行总结:

  • 1、图像变换
    由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,例如:
    傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。

  • 2、图像编码压缩
    图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

  • 3、图像增强
    图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。

  • 4、图像复原
    图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。

  • 5、图像分割
    图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。

  • 6、图像描述
    最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。

  • 7、图像分类(识别)
    图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。

2019-01-01 11:30:26 Aoulun 阅读数 744

做了这么长的时间,我也一直在是思考这个问题,也当是个经验总结。先抛开硬件上的东西。

2019年第一更,本来想去放松下的,那就下午吧,上午休息下。

1、我经常用到的就是积分图,这个好处自然不多说,尤其是在目标的定位、目标过滤上有很大的作用。直接通过数组下表进行查找,那简直就是相当的快。

 

2、另外一个常用的是分块多线程。假如说CPU是多个核心的话,那么完全可以用多线程加速。原理性的东西这里不多讲。在分块的时候有一点需要注意一下。例如,CPU有4个核心,那么可以把图像分为4块,块与块之间最好有重叠,为什么呢?因为这是要考虑到图像的边缘,有些要不然拼接到一起的时候,容易出现问题。

 

3、这个相对复杂,但是做的好,确实可以省去很多malloc和delete。在算法的最先开始,预先申请一块很大的内存,以后需要用到内存的地方,都在这一大块内存里面进行就行。没有必要在算法的内存反复的申请和释放内存。这个操作起来难度较大。尤其是要考虑到每一行的首尾,以及行的步长问题。

 

4、GPU加速,不多说

 

5、更改指令集,没用过。

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