烟台网站制作这,找平面设计师网站,asp系统网站怎么做优化,企业网站建立步骤图像变换有什么用#xff1f;
图像变换意义#xff1a;
图像的特征更为突出原来无法直接观测的特征直接显现出来需要提取图像中的特征#xff0c;便于后续处理及图像理解
常见图像变换#xff1a;
几何变换#xff1a;图像放缩、图像平移、图像旋转、图像镜像、图像翻…图像变换有什么用
图像变换意义
图像的特征更为突出原来无法直接观测的特征直接显现出来需要提取图像中的特征便于后续处理及图像理解
常见图像变换
几何变换图像放缩、图像平移、图像旋转、图像镜像、图像翻转。距离变换通常作用于二值图像上描述的是该像素点到最近的区域边界的距离。如果假设背景为黑(对应值为0)则为到最近值0的距离。 [00000000011111100111111001111110011111100111111000000000][00000000011111100122221001233210012222100111111000000000]\begin{bmatrix} 0 0 0 0 0 0 0 0 \\ 0 1 1 1 1 1 1 0 \\ 0 1 1 1 1 1 1 0 \\ 0 1 1 1 1 1 1 0 \\ 0 1 1 1 1 1 1 0 \\ 0 1 1 1 1 1 1 0 \\ 0 0 0 0 0 0 0 0 \end{bmatrix} \begin{bmatrix} 0 0 0 0 0 0 0 0 \\ 0 1 1 1 1 1 1 0 \\ 0 1 2 2 2 2 1 0 \\ 0 1 2 3 3 2 1 0 \\ 0 1 2 2 2 2 1 0 \\ 0 1 1 1 1 1 1 0 \\ 0 0 0 0 0 0 0 0 \end{bmatrix} ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡00000000111110011111001111100111110011111001111100000000⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡00000000111110012221001232100123210012221001111100000000⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤ 距离变换可以将联通的区域分开比如数硬币。对数极坐标变换(Log-Polar变换) 将图像像素坐标转换为极坐标然后对距离取对数 变换公式 {rx2y2,ρlog(r);θarctanyx\left\{ r \sqrt{x^2 y^2}, \rho log(r); \\ \theta arctan\frac{y}{x} \right. {rx2y2,ρlog(r);θarctanxy 反变换公式 {xrcos(θ);yrsin(θ)\left\{ x rcos(\theta); \\ y rsin(\theta) \right. {xrcos(θ);yrsin(θ) Log-Polar变换应用全景展开 总结图像几何变换包括放缩、旋转、镜像等距离变换具有类似“细化”的效果Log-Polar变换将直角坐标变换到极坐标可用于全景展开等应用
灰度直方图
目标
掌握直方图的基本概念掌握从直方图判断图像质量的方式掌握直方图均衡的基本思想 灰度越集中对比度越低灰度平均对比度高但噪声也多。
直方图均衡化
直方图均衡化的作用就是图像增强 需要满足的条件亮的依然亮暗的依然暗。直方图映射方法 sk∑j0knjn,k0,1,2,⋅⋅⋅,L−1s_k \sum_{j0}^{k}{\frac{n_j}{n}},k 0,1,2,···,L-1 skj0∑knnj,k0,1,2,⋅⋅⋅,L−1 n为总像素个数L表示所有像素值的种类数,表示新的灰度值所对应的概率等于之前所有灰度值概率的累加。 示例
25512820050502002555025520012812820020025550
、
灰度值像素个数概率累计概率根据函数映射后的灰度值取整5040.250.250.25*(255-0) 63.756412830.18750.4375111.562511220050.31250.75191.2519125540.251255255
、
25511219164641912556425519111211219119125564
全局直方图均衡化会增加噪声。
局部直方图均衡化
在每一个小邻域内使用直方图均衡化 利用局部直方图统计进行灰度增强
在图像的每个小邻域内计算局部直方图进而计算灰度和方差根据需求对图像的亮部或暗部进行增强。如对暗部增强方式如下计算局部均值mlm_lml与全局均值mmm如ml≤k0mm_l \leq k_0mml≤k0m,则认为该点是候选点进一步计算局部方差σl\sigma_lσl与全局方差σ\sigmaσ,如σl≤k2σ\sigma_l\leq k_2\sigmaσl≤k2σ且k1σ≤σlk1k2k_1\sigma\leq\sigma_lk_1k_2k1σ≤σlk1k2(对标准差为0的区域不增强)则满足增强条件对同时满足12条件的点进行增强 g(x,y)E⋅f(x,y)g(x,y) E \cdot f(x,y) g(x,y)E⋅f(x,y) 需要指定k0,k1,k2k_0,k_1,k_2k0,k1,k2
总结
直方图是对图像中的像素灰度进行统计通过直方图可判断图像曝光及对比度等情况直方图均衡可增强图像对比度适当使用局部直方图均衡可有效改善图像暗部质量
霍夫变换
目标
掌握参数空间及霍夫(Hough)变换的基本原理了解Hough变换的基本步骤
Hough变换
问题给定图像中的n个点希望找到这些点中的多个子集每个子集对应一条直线。难点我们不知道图像中哪些点对应一条直线暴力搜索首先得到n(n−1)2\frac{n(n-1)}{2}2n(n−1)条直线进一步对所有附近的点进行比较判断是否属于直线。因此需要执行n(n−1)2\frac{n(n-1)}{2}2n(n−1)次比较计算量太大此外判断点是否属于直线需要借助阈值该值难以设置。Hough于1962年提出Hough变换很好的解决了计算速度和鲁棒性的问题核心思想将原坐标(x,y)转换到参数空间中表示进一步利用投票机制解决鲁棒性问题直线方程表达斜距/截距ykxby kx bykxb,每一条直线对应一个k,bk,bk,b法线式xcosθysinθρxcos\theta ysin\theta \rhoxcosθysinθρ,每一条直线对应一个ρ,θ\rho,\thetaρ,θ直角坐标系的一点(x0,y0x_0,y_0x0,y0),对应参数空间(θ,ρ\theta,\rhoθ,ρ)中的一条近似正弦曲线 x0cosθy0sinθρ⇒ρxo2yo2cos(θϕ)x_0cos\theta y_0sin\theta \rho \Rightarrow \rho \sqrt{{x_o}^2{y_o}^2}cos(\theta \phi) x0cosθy0sinθρ⇒ρxo2yo2cos(θϕ)同一条直线上的多个点在(θ,ρ)(\theta,\rho)(θ,ρ)空间中必相交于一点但(θ,ρ)(\theta,\rho)(θ,ρ)空间中的曲线是非线性的直接寻找交汇于一点的曲线计算量大因此将(θ,ρ)(\theta,\rho)(θ,ρ)空间划分网格寻找包含曲线数目多的网格点。
Hough变换步骤
将(θ,ρ)(\theta,\rho)(θ,ρ)空间量化为许多小格根据x−yx-yx−y平面每一个点代入θ\thetaθ的量化值。算出各个ρ\rhoρ将对应格内通过ρ−θ\rho-\thetaρ−θ曲线的数目计数累加当全部点变换后对小格进行检验(投票机制)。设置累计阈值TTT计数器大于TTT的小格对应于共线点其可以用作直线拟合参数。小于TTT的反映非共线点丢弃不用。 应用寻找飞机跑道对原视图像进行边缘检测提取边缘点寻找共线的点即飞机跑道。
总结
霍夫变换基于直线法线表示及对应的参数空间(θ,ρ)(\theta,\rho)(θ,ρ);最终直线参数确定采用投票机制(即避免了复杂的方程求解又对噪声具有一定鲁棒性)统计参数空间小格中的曲线数目。
图像变换实战演练
目标
使用OpenCV实现基本图像几何变换使用OpenCV实现距离变换和Log-Polar变换使用OpenCV实现直方图计算与直方图均衡使用OpenCV实现Hough变换
相关函数
距离变换
dst cv2.distanceTransform(src, distanceType, maskSize[, dst[, dstType]])
#distanceType:距离计算方式DIST_L1,DIST_L2或DIST_C
#maskSize:掩模尺寸可取DIST_MASK_PRECISE或DIST_MASK_35等。Log-Polar变换
dst cv2.logPolar(src, center, M, flags[, dst])
#center:变换中心点
#M:幅值尺度参数
#flags:标志。是插值方法和下面选项的组合CV_WARP_FILL_OUTLIERS填充目标图像中的所有像素CV_WARP_INVERSE_MAP表示矩阵是从目标图像到源图像的反变换计算直方图
matplotlib.pyplot.hist(x, binsNone, rangeNone,...)
#bins:多少个柱
#range:显示的范围直方图均衡化
dst cv2.equalizeHist(src[, dst])标准Hough变换
lines cv.HoughLines(image, rho, theta, threshold[, lines[, srn[, stn[, min_theta[, max_theta]]]]])
#image:输入图像应为二值图像通常使用边缘检测结果
#rho:线段以像素为单位的距离精度double类型的推荐用1.0
#theta:线段以弧度为单位的角度精度推荐用numpy.pi/180
#threshold:累加平面的阈值参数int类型超过设定阈值才被检测出线段值越大基本意味着检出的线段越长检出的线段个数越少。累计概率Hough变换
lines cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]])实战演练
程序功能
实现基本图像几何变换放缩、翻转实现距离变换和Log-Polar变换实现直方图计算与直方图均衡实现Hough变换以上如果显示
import cv2
import matplotlib.pyplot as plt
import numpy as npimg cv2.imread(C:/python/img/lena.jpg)
cv2.imshow(Source, img)#实现图像改变大小和翻转
w, h img.shape[0:2]
resized cv2.resize(img, (int(w/4), int(h/2)))
flipped cv2.flip(img, -1)
cv2.imshow(Resized, resized)
cv2.imshow(Flipped, flipped)#实现图像的距离变换
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thr cv2.threshold(gray, 100, 255, cv2.THRESH_OTSU)
dist cv2.distanceTransform(thr, cv2.DIST_L2, cv2.DIST_MASK_3) #3*3的掩模
dist_norm cv2.convertScaleAbs(dist)
cv2.imshow(Distance transform, dist_norm)#实现Log-polar变换
center (w/2, h/2)
maxRadius 0.7*min(center)
M w/cv2.log(maxRadius)
print(maxRadius, M[0])
log_polar cv2.logPolar(img, center, M[0]*0.8, cv2.INTER_LINEAR cv2.WARP_FILL_OUTLIERS)
cv2.imshow(Log-polar, log_polar)#实现灰度直方图和直方图均衡化
plt.hist(gray.ravel(), 255, [0,256])
plt.show()
equa cv2.equalizeHist(gray)
cv2.imshow(Equalized image, equa)#实现Hough变换
edges cv2.Canny(thr, 50, 150)
disp_edge cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
lines cv2.HoughLinesP(edges, 1, 1*np.pi/180, 10)
for line in lines:for x1, y1, x2, y2 in line:#画出直线cv2.line(disp_edge, (x1,y1), (x2,y2), (0, 255, 0), 1)passprint(Line count:, len(lines))
cv2.imshow(edges,edges)
cv2.imshow(Hough lines, disp_edge)cv2.waitKey()
cv2.destroyAllWindows()