2019-07-02 21:51:32 qq_37486501 阅读数 759
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

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

数字图像处理中的图像锐化

  1. 图像锐化的作用: 突出增强边缘轮廓细节
  2. 空间域锐化处理方法: (空间锐化滤波)
  • 梯度算法:(一阶差分)——景物边缘轮廓提取,
    (1): 正交梯度算法——水平垂直差分
    (2): Roberts梯度算法——交叉差分
    (3): Prewitt梯度算法——两侧做差
    (4): Sobel梯度算法——突出离他最近的

  • 拉普拉斯算法: (二阶差分)——细节上增强对比度,突出细节部分

2015-04-02 14:34:07 gggg_ggg 阅读数 2782
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

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


    在数字图像处理过程中,经常会遇到求梯度后,重新构建图像的问题。一般情况下,都是通过解泊松方程(还有其他方式重构图像,具体算法如下图所示,),利用拉普拉斯算子求解;但有一点请注意泊松方程求出的只是近似值,无法求出精确的原始值。


                                                                  常用图像重建算法


2019-06-19 20:30:22 weixin_39739342 阅读数 509
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

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

选择题

1.信息量是信息多少的量度,例如灰度范围在0到255,则该图像的信息量为8,因为256个灰度级可以用8位二进制表示。

2.图像与灰度直方图的对应关系为多对一。

3.图像锐化处理:高通滤波法、梯度锐化法、Laplacian增强算子

4.图像平滑处理:局部平滑法、中值滤波(椒盐噪声)……

5.采用模板[-1 1]主要检测垂直方向的边缘。

6.图像灰度值方差说明了图像的对比度。

7.图象边缘检测算子中抗噪性能最好的是Prewitt 算子

8.欧氏距离:xy差值的平方相加再开方

9.图像细节数据在高频域

10.RGB和HSI相转化

    色调H、色饱和度S和亮度I

    RGB->HSI

è¿éåå¾çæè¿°

    HSI->RGB

è¿éåå¾çæè¿°

11.JPEG标准对图像压缩编码采用的是离散余弦变换,它首先将图像分成8*8的图像块。

12.RGB转Ycbcr

    Y:表示明亮度,也就是灰阶值。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。

    Cb:反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
    Cr:反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。

    Y = 0.257*R+0.564*G+0.098*B+16
    Cb = -0.148*R-0.291*G+0.439*B+128
    Cr = 0.439*R-0.368*G-0.071*B+128

    R = 1.164*(Y-16)+1.596*(Cr-128)
    G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)
    B =1.164*(Y-16)+2.017*(Cb-128)

    


简答题

1.二维傅里叶变换的可分离性(多次出现)

    分离性表明:二维离散傅立叶变换和反变换可用两组一维离散傅立叶变换和反变换来完成。

2.直方图均衡化的过程(多次出现)

    ①先计算图像中各个灰度级的出现频率,用p(i)表示灰度级i的出现频率,其值等于灰度级出现次数/图像像素个数

    ②计算累积分布,用s(i)表示灰度级i的累积分布

    ③将累积分布进行量化,量化后的灰度级用sq(i)表示

    ④原始图像中的灰度级和均化后图像中的灰度级之间的对应关系

3.伪彩色增强(多次出现)

    伪彩色增强是把一副灰色图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一副彩色的图像的技术

4.真彩色图像增强步骤

    ①将图像从RGB格式 转换为HSI格式

    ②采用灰度图像增强的方法(如直方图均衡)作用于亮度分量I图像

    ③将结果转化为RGB格式用于显示

5.图像分割定义

    图像分割是指把图像分成互不相叠的区域并提取出感兴趣目标的技术

6.哈夫变换检测直线的原理

    利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中直线检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。

7.膨胀的作用是使空洞收缩,目标扩大。对消除图像中目标中的小颗粒噪声和填补凹陷是非常有效的。

    腐蚀的作用是使目标收缩,空洞扩大。对去除图像小颗粒噪声和目标之间的粘连是非常有效的。

    开运算:先腐蚀后膨胀,光滑目标轮廓,消除小目标,保持原有目标大小

    闭运算:先膨胀后腐蚀,填充凹陷,弥合空洞和裂缝,保持原有目标大小

8.区域增长是把图像分割成若干小区域,比较相邻小区域特征的相似性。若足够相似,则作为同一区域合并,以此方法将特征相似的小区域不断合并,直到不能合并为止,最后形成特征不同的各区域。


计算题

1.哈夫曼编码、平均码长 (多次出现)

2.形状数(最小查分链码、查分链码)(必考)

    https://blog.csdn.net/ok460695972ko/article/details/80198204

3.一致图像参数(分辨率等)求存储空间 位图(必考)


分析题

1.行程编码、Z字形(多次出现)

通过改变图像的描述方式,来实现图像的压缩。

将一行中灰度值相同的相邻像素,用一个计数值和该灰度值来代替。

一维:‘aaabbccccdddaa’ 行程编码->‘3a2b4c3d2a’

二维:Z字形去形成一条一维长数据,然后同理得行程编码

优点:在处理包含大量重复信息时可以有很好的压缩效率

2.DPCM(差分预测编码)

预测编码:实质上只是对新的信息进行编码,以消除相邻像素之间的相关性和冗余性。因为像素的灰度是连续变化的,所以在一个区域中,相邻像素之间灰度值的差别可能很小。

例如:可以用  238,2,0,1,1,3  来代表  238,240,240,241,242,245

3.熵编码

熵编码即编码过程中按熵原理不丢失任何信息的编码。信息熵为信源的平均信息量(不确定性的度量)。

常见的熵编码有:香农(Shannon)编码、哈夫曼(Huffman)编码和算术编码(arithmetic coding)。

4.标记是什么

     对属于同一个1像素连接成分的所有像素分配相同的编号,对不同的连接成分分配不用的编号的处理,叫做连接成分的标记。

5.滤波

  原理 效果 备注
理想高通滤波 频域图像的高频部分通过而抑制低频部分。理想是指该滤波器不能用电子元器件来实现(下同) 在图像中图像的边缘、细节对应高频分量,因此高通滤波的效果是图像锐化 会存在一定的振铃效应
巴特沃斯高通滤波     通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。
理想低通 将频域图像中的高频部分滤除而通过低频部分 图像的边缘和噪声对应于频域图像中的高频部分,而低通滤波的作用即是减弱这部分的能量,从而达到图像平滑去噪的目的。 会存在一定的振铃效应
巴特沃斯低通     通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。

理想高通滤波和巴特沃斯高通滤波效果的差异

6.理想低通与巴特沃斯低通区别


算法题

1.直方图均衡化算法

    https://blog.csdn.net/xcmax/article/details/40352161

    或课本70页

2.中值滤波的过程和应用

    基本原理:把数字图像中的一点的值用该点的一个邻域中的各点值的中值代替,让周围的像素值更接近真实值,从而消除孤立噪声点。   

    算法描述:

        [1] 获得源图像的首地址及图像的宽和高

        [2] 开辟一块内存缓冲区,用以暂存结果图像,并初始化为0

        [3] 逐个扫描图像中的像素点,将其邻域各元素的像素值从小到大进行排序,将求得到的中间值赋值给目标图像中与当前点对应的像素点

        [4] 循环步骤[3],直到处理完源图像的全部像素点

        [5] 将结果从内存缓冲区复制到源图像的数据区

    应用:对消除椒盐噪声表现较好

    (如果是均值滤波的化适当修改,应用是对消除高斯噪声表现较好)

3.空间低通滤波法的过程和应用

    是应用模板卷积方法对图像的每一像素进行局部处理。

    过程:

    ①将模板(低通滤波器)在图像中按从左到右、从上到下的顺序移动,将模板中心与每个像素一次重合

    ②将模板中的各个系数与其对应的像素一一相乘,并将所有的结果相加

    ③将结果赋给图像中对应模板中心位置的像素

    优点:计算量小、使用灵活、使用于并行计算

    应用:图像平滑、模糊一幅图像

4.JPEG压缩编码的算法过程

①正向离散余弦变换(FDCT)。

②量化(quantization)。

③Z字形编码(zigzag scan)。

④使用差分脉冲编码调制(differential pulse code modulation,DPCM)对 直流系数(DC)进行编码。

⑤使用行程长度编码(run-length encoding,RLE)对交流系数(AC) 进行编码。  

⑥熵编码(entropy coding)。

5.二维图像卷积的全过程

    二维离散傅里叶变换的性质:变换可分性、线性、比例性质、空间(频率)位移、对称性(共轭对称)、差(积)分、旋转不变性、能量定理、自(互)相关、周期性

    图像的自相关函数与功率谱之间的关系是一对傅里叶变换

2019-08-04 18:09:26 weixin_43461608 阅读数 169
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

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

正交变换 与图像压缩

傅里叶变换

  • 时域连续—>频域非周期

  • 时域的非周期—>频域连续

图像的频率—>图像中灰度变化的剧烈程度的指标。

傅里叶频谱图上看到的亮点实际是图像上某一点与领域点差异的强弱,即梯度的大小。梯度大,亮度强。

快速傅里叶变换(FFT):

  • 蝶形算法

码位倒序:将十进制转换成二进制,然后将二进制的序列倒序重排,再将颠倒顺序后的二进制转换成十进制。

编程实现FFT:

  • 正变换:Y = fft2(X, m, n):X->的输入图像;m,n—>第一维到第二维规整到指定的长度;abs(Y) —>幅度谱;angle(Y)—>相位谱
  • 逆变换:Y = ifft2(X,m , n)
I = imread('C:\Users\Administrator\Desktop\lena.jpg');
I1 = rgb2gray(I);
fcoef = fft2(double(I1));%进行快速傅里叶变换
 tmp1 = log(1+abs(fcoef));%傅里叶变换的幅度值范围大到不合适在屏幕上显示,
 %为了在屏幕上凸显出高低变化的连续性,可以用对数尺度来替换线性尺度,为了确保大于0,故+1处理
 spectrum = fftshift(fcoef);%将频谱图移到图像的中心
 tmp2 = log(1+abs(spectrum));
 ifcoef = ifft2(fcoef);%逆变换,只有对复数矩阵进行逆变换,才可以恢复原图
 figure                            %显示处理结果
subplot(2,2,1), imshow(I1), title('source image');
subplot(2,2,2), imshow(tmp1,[]), title('FFT image');
subplot(2,2,3), imshow(tmp2,[]), title('shift FFT image');
subplot(2,2,4), imshow(ifcoef,[]), title('IFFT image');

离散余弦变换(DCT)

:空间域的低通滤波器,在傅里叶级数展开式中,如果被展开的函数是实偶函数,则其傅里叶级数中只含有余弦项,再将其离散化,由此可导出离散余弦变换。

JPEG编码:图像分解成8x8,16x16的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码等处理。

快读离散余弦变换(ANN):

缺点:对高质量图像的影响比低质量图像要大

优点:极大的减少了计算量,效率可观。

编程:

正变换:B = dct2(A, m , n,)

逆变换:A = idct2(B);

D = dctmtx(n); 返回一个n x n 的DCT变换矩阵;D * A就是A矩阵每一列的DCT变换值,D’*A为A的每一列的DCT反变换。

dct2(A)=DAD’;

利用DCT来进行图像压缩:

分块—>正变换—>过滤—>逆变换

I = imread('C:\Users\Administrator\Desktop\lena.jpg');
I = rgb2gray(I);%针对灰度图像
I = im2double(I);
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';%写定对每一块的计算方法
B = blockproc(I,[8 8],dct);%对I,进行【8,8】的分块处理,同时每一块执行dct的计方法
mask = [1   1   1   1   0   0   0   0
        1   1   1   0   0   0   0   0
        1   1   0   0   0   0   0   0
        1   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0];
        %滤波矩阵,即只对左上角的变换后进行保留
B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);
invdct = @(block_struct) T' * block_struct.data * T;
I2 = blockproc(B2,[8 8],invdct);%对逆变换后的I,进行逆变换,获得压缩后的原图形
imshow(I), figure, imshow(I2)

沃尔什-哈达玛变换—图像信息压缩

  • 按沃尔什排列的沃尔什函数
  • 按佩利排列的沃尔什函数
  • 按哈达玛排列的沃尔什函数

—>蝶形运算

编程:

Y = fwht(X,n,ordering);

X:一维信号,n: Y的大小; ordering:排列顺序

处理图像时,考虑H = hadamard(n); 返回值为输出的变换核矩阵。

B = blockproc(A,[M,N],fun);

将矩阵A分成【MxN】份并分别执行fun方法。

  • 无法控制压缩比的代码

通过设定简单的阈值来达到滤波压缩的作用

I = imread('C:\Users\Administrator\Desktop\lena.jpg');
I = rgb2gray(I);%针对灰度图像
I1 = double(I);
T = hadamard(8);%创建n=8的哈达玛变换核矩阵
myFun1 = @(block_struct)T*block_struct.data*T/64;%块方法,注意1/(8*8)
H = blockproc(I1, [8 8], myFun1);
H(abs(H)<3.5)=0;%设定阈值,滤除系数小的分量,达到压缩的目的
myFun2 = @(block_struct)T*block_struct.data*T;%逆变换不用/(M*N)
I2 = blockproc(H, [8 8], myFun2);
subplot(121), imshow(I1,[]), title('original image');
subplot(122), imshow(I2,[]), title('zipped image');
  • 可以控制压缩比的代码

    B = im2col(A,[m n],block_type);

    重排图像块为矩阵列。重排为列,

    A为重排的矩阵,[m,n]为指定分割的小子块矩阵的尺寸,block_type:‘distinct’:不重叠,不足以的填充0,‘sliding’:可重叠。

    [Y, ins]=sort(A,1/2)

    对于A排序,若是1—>按照列升序,2—>按照行升序,‘descend’:降序;Y:排序后的矩阵,ins:排序后的索引号=>A = Y*ins

    I = imread('C:\Users\Administrator\Desktop\lena.jpg');
    I = rgb2gray(I);%针对灰度图像
    I1 = double(I);
    [m n] =size(I);
    sizi = 8;
    num = 16;%1-num/(8*8):压缩比
    %分块进行离散沃尔什变换
    T = hadamard(sizi);
    myFun1 = @(block_struct)T*block_struct.data*T/(sizi.^2);
    hdcoe = blockproc(I1, [sizi, sizi], myFun1);%分块进行离散沃尔什变换
    %重新排列系数
    coe = im2col(hdcoe,  [sizi, sizi], 'distinct');
    coe_t = abs(coe);
    [Y, ind] = sort(coe_t);
    %舍去绝对值较小的系数
    [m_c, n_c] = size(coe);
    for i = 1:n_c
    coe(ind(1:num, i), i)=0;%按照列排序,将前16行小的系数都置为0
    end
    %重建图像
    re_hdcoe = col2im(coe, [sizi, sizi], [m, n], 'distinct');%逆变化
    myFun2 = @(block_struct)T*block_struct.data*T;
    re_s = blockproc(re_hdcoe, [sizi, sizi], myFun2);
    subplot(121), imshow(I1,[]), title('original image');
    subplot(122), imshow(re_s,[]), title('compressed image');%压缩比例为75%
    

卡洛南-洛伊变换(K-L变换)

将在原本的坐标中相关的数据,通过转换到新的坐标系中,使得数据不相关。

  • 相关函数

[coeff,score,latent,tsquare] = princomp(X)

X:输入矩阵 ( nxp),coeff:对输入矩阵做主成分变换后返回的主成分系数(p x p); score:在新的坐标系中的数据,

B =reshape(A, m , n)

将A矩阵中的元素按照列读取,然后重组成mxn的矩阵。

图像压缩:

I = imread('C:\Users\Administrator\Desktop\lena.jpg');
I = rgb2gray(I);%针对灰度图像
x = double(I)/255;
[m,n]=size(x);
y =[];
%拆解图像
for i = 1:m/8;
    for j = 1:n/8;
        ii = (i-1)*8+1;
        jj = (j-1)*8+1;
        y_app = reshape(x(ii:ii+7,jj:jj+7),1,64);
        y=[y;y_app];
    end
end
%将图像的每一个小块分解成64列的一维数组

%KL变换
[COEFF,SCORE,latent] = pca(y);
kl = y * COEFF;

kl1 = kl;
kl2 = kl;
kl3 = kl;%矩阵按照从大到小顺序排列

%置零压缩过程
kl1(:, 33:64)=0;
kl2(:, 17:64)=0;
kl3(:, 9:64)=0;%将9-64列的像素都置零,实现压缩的方法。

%KL逆变换
kl_i = kl*COEFF';
kl1_i = kl1*COEFF';
kl2_i = kl2*COEFF';
kl3_i = kl3*COEFF';

image = ones(256,256);
image1 = ones(256,256);
image2 = ones(256,256);
image3 = ones(256,256);

k=1;
%重组图像
for i = 1:m/8;
    for j = 1:n/8;

        y = reshape(kl_i(k, 1:64),8,8);
        y1 = reshape(kl1_i(k, 1:64),8,8);
        y2 = reshape(kl2_i(k, 1:64),8,8);
        y3 = reshape(kl3_i(k, 1:64),8,8);

        ii = (i-1)*8+1;
        jj = (j-1)*8+1;

        image(ii:ii+7,jj:jj+7) = y;
        image1(ii:ii+7,jj:jj+7) = y1;
        image2(ii:ii+7,jj:jj+7) = y2;
        image3(ii:ii+7,jj:jj+7) = y3;

        k=k+1;
    end
end
figure
subplot(221);imshow(image);
subplot(222);imshow(image1);
subplot(223);imshow(image2);
subplot(224);imshow(image3);
2017-09-04 08:28:47 HNU_wang_chao 阅读数 941
  • 机器学习入门30天实战

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 系列课程包含Python机器学习库,机器学习经典算法原理推导,基于真实数据集案例实战3大模块。从入门开始进行机器学习原理推导,以通俗易懂为基础形象解读晦涩难懂的机器学习算法工作原理,案例实战中使用Python工具库从数据预处理开始一步步完成整个建模工作!具体内容涉及Python必备机器学习库、线性回归算法原理推导、Python实现逻辑回归与梯度下降、案例实战,信用卡欺诈检测、决策树与集成算法、支持向量机原理推导、SVM实例与贝叶斯算法、机器学习常规套路与Xgboost算法、神经网络。

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

最近在学习神经元追踪这一个课题,在追踪中涉及到一个重要的算法就是这个梯度下降算法。

其实,梯度下降算法数学本质上是一个求解最优解的一个方法,但应用到数学图像处理中的话就有了他的物理意义,即从起始点到目的点的迭代次数最少的算法。

从起始点,以步长为半径,对损失函数求一阶导数(梯度)找到梯度最大的那个放下,通俗的讲就是你站在山顶你要去山下,梯度下降算法即代表这你刚开始就是找的最陡峭的一个坡下去,迭代完成一次之后重复第一次的步骤,直到到达终点。

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