99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

圖像旋轉(zhuǎn)原理與OpenCV實(shí)現(xiàn):從旋轉(zhuǎn)矩陣到邊界處理全解析

圖像旋轉(zhuǎn)原理與OpenCV實(shí)現(xiàn):從旋轉(zhuǎn)矩陣到邊界處理全解析 1. 圖像旋轉(zhuǎn)為什么你該自己寫一遍而不是只調(diào)函數(shù)不管是做圖像處理入門還是在實(shí)際項(xiàng)目里遇到文檔掃描、衛(wèi)星影像校正、游戲素材生成圖像旋轉(zhuǎn)都是繞不開的基礎(chǔ)操作。很多人提起旋轉(zhuǎn)第一反應(yīng)就是cv2.getRotationMatrix2D加cv2.warpAffine兩行代碼搞定真到面試被問一句“旋轉(zhuǎn)矩陣?yán)锬莻€(gè) sin 為什么帶負(fù)號(hào)”或者產(chǎn)品提了需求“我要讓圖像旋轉(zhuǎn)后不被裁剪還得知道旋轉(zhuǎn)后角點(diǎn)的精確坐標(biāo)”手就停了。這篇內(nèi)容圍繞“圖像旋轉(zhuǎn)——常規(guī)旋轉(zhuǎn)”這個(gè)主題把二維平面內(nèi)圖像旋轉(zhuǎn)的數(shù)學(xué)原理、代碼實(shí)現(xiàn)、邊界處理策略以及實(shí)踐中的典型坑一次講透。文章不涉及 3D 旋轉(zhuǎn)、透視變換或極坐標(biāo)下的旋轉(zhuǎn)聚焦在最常用、也最容易被輕視的一個(gè)基礎(chǔ)操作上。適合剛接觸 OpenCV 的學(xué)生、做工業(yè)視覺的工程師、以及想補(bǔ)一遍底層原理的開發(fā)者閱讀。先說一個(gè)我自己的經(jīng)驗(yàn)圖像旋轉(zhuǎn)看著簡(jiǎn)單但它的核心難點(diǎn)從來不是“轉(zhuǎn)一下”而是“繞哪個(gè)點(diǎn)轉(zhuǎn)”“轉(zhuǎn)完畫布多大”“空白區(qū)域填什么”“旋轉(zhuǎn)后坐標(biāo)怎么對(duì)應(yīng)回去”。這四個(gè)問題搞定了旋轉(zhuǎn)這個(gè)專題你就真正拿下了后面再看仿射變換、透視變換都會(huì)輕松很多。這篇文章就按這個(gè)思路往下走。2. 旋轉(zhuǎn)的數(shù)學(xué)基礎(chǔ)從二維平面坐標(biāo)變換說起2.1 二維平面繞原點(diǎn)旋轉(zhuǎn)的坐標(biāo)變換二維平面里一個(gè)點(diǎn)繞原點(diǎn)旋轉(zhuǎn)一個(gè)角度 θ變換公式是x x * cosθ - y * sinθ y x * sinθ y * cosθ這個(gè)公式是圖像旋轉(zhuǎn)的地基。我先說說它是怎么推出來的因?yàn)槔斫饬送茖?dǎo)過程你就不會(huì)記混符號(hào)。假設(shè)有一點(diǎn) P(x, y)在極坐標(biāo)下可以寫作x r * cosα y r * sinα其中 r 是點(diǎn)到原點(diǎn)的距離α 是該點(diǎn)與 x 軸正方向的夾角。現(xiàn)在把這個(gè)點(diǎn)繞原點(diǎn)逆時(shí)針旋轉(zhuǎn) θ新的角度變成 α θ于是旋轉(zhuǎn)后的坐標(biāo)是x r * cos(α θ) r * (cosα * cosθ - sinα * sinθ) x * cosθ - y * sinθ y r * sin(α θ) r * (sinα * cosθ cosα * sinθ) x * sinθ y * cosθ這樣推導(dǎo)下來符號(hào)就不會(huì)記反。注意這個(gè)公式默認(rèn)的是逆時(shí)針旋轉(zhuǎn)而且旋轉(zhuǎn)中心是坐標(biāo)系原點(diǎn) (0, 0)。圖像處理里這兩個(gè)前提常常被打破后面會(huì)專門講。把上面的公式寫成矩陣形式就是|x| | cosθ -sinθ | |x| |y| | sinθ cosθ | |y|這個(gè) 2×2 矩陣就是二維旋轉(zhuǎn)矩陣 R。到這里你可能覺得簡(jiǎn)單但千萬別小看這個(gè)矩陣很多人寫代碼時(shí)出錯(cuò)就是因?yàn)樽鴺?biāo)系方向和旋轉(zhuǎn)方向的定義沒統(tǒng)一。2.2 先說結(jié)論OpenCV 的旋轉(zhuǎn)方向定義OpenCV 的坐標(biāo)系統(tǒng)和數(shù)學(xué)課本里的笛卡爾坐標(biāo)系有一個(gè)關(guān)鍵區(qū)別在 OpenCV 圖像坐標(biāo)系中x 軸向右y 軸向下。這就導(dǎo)致同一個(gè)“正角度”在數(shù)學(xué)里是逆時(shí)針在 OpenCV 里看起來是順時(shí)針。坐標(biāo)系x 軸方向y 軸方向正角度旋轉(zhuǎn)方向數(shù)學(xué)坐標(biāo)系右上逆時(shí)針圖像坐標(biāo)系(OpenCV)右下順時(shí)針視覺上但 OpenCV 的轉(zhuǎn)置矩陣公式本身仍然沿用數(shù)學(xué)公式的形式即x x * cosθ - y * sinθ y x * sinθ y * cosθ所以當(dāng)你調(diào)用cv2.getRotationMatrix2D(center, angle, scale)時(shí)傳入正角度圖像會(huì)繞 center 逆時(shí)針旋轉(zhuǎn)從圖像內(nèi)容上看圖像內(nèi)容逆時(shí)針轉(zhuǎn)。這個(gè)細(xì)節(jié)在實(shí)際編碼中極其容易踩坑后面我會(huì)通過實(shí)驗(yàn)驗(yàn)證。3. 繞原點(diǎn)旋轉(zhuǎn)的代碼實(shí)現(xiàn)與缺陷分析3.1 最直接的實(shí)現(xiàn)遍歷像素點(diǎn)做坐標(biāo)映射剛理解公式時(shí)最容易想到的實(shí)現(xiàn)方式就是遍歷原圖像的每個(gè)像素點(diǎn) (x, y)計(jì)算旋轉(zhuǎn)后的新坐標(biāo)然后把像素值賦過去。寫成代碼如下import numpy as np import cv2 def rotate_around_origin(img, angle_deg): h, w img.shape[:2] theta np.deg2rad(angle_deg) # 旋轉(zhuǎn)矩陣數(shù)學(xué)形式 cos_a np.cos(theta) sin_a np.sin(theta) # 目標(biāo)圖像畫布需要擴(kuò)大先估算新尺寸 new_w int(abs(w * cos_a) abs(h * sin_a)) 1 new_h int(abs(w * sin_a) abs(h * cos_a)) 1 dst np.zeros((new_h, new_w, 3), dtypeimg.dtype) for y in range(h): for x in range(w): # 繞 (0,0) 旋轉(zhuǎn) new_x int(x * cos_a - y * sin_a) new_y int(x * sin_a y * cos_a) # 檢查是否在目標(biāo)畫布范圍內(nèi) if 0 new_x new_w and 0 new_y new_h: dst[new_y, new_x] img[y, x] return dst這段代碼跑起來能轉(zhuǎn)但問題一眼就能看出來。第一個(gè)問題是目標(biāo)圖像上會(huì)出現(xiàn)大量空洞。因?yàn)樵瓐D的整數(shù)像素點(diǎn)經(jīng)過旋轉(zhuǎn)后映射到目標(biāo)畫布上也是整數(shù)坐標(biāo)但旋轉(zhuǎn)后的坐標(biāo)分布不是均勻的有些目標(biāo)位置可能沒有任何源像素對(duì)應(yīng)結(jié)果就是結(jié)果圖上有黑色的斑點(diǎn)和條紋視覺效果很差。第二個(gè)問題是邊界切邊。繞原點(diǎn)旋轉(zhuǎn)時(shí)圖像左上角那個(gè)點(diǎn) (0, 0) 永遠(yuǎn)留在原點(diǎn)不動(dòng)但圖像的其它角點(diǎn)會(huì)轉(zhuǎn)出原畫布范圍導(dǎo)致輸出圖像內(nèi)容嚴(yán)重丟失。3.2 反向映射才是正經(jīng)做法正向映射從源圖找目標(biāo)會(huì)產(chǎn)生空洞那反過來呢從目標(biāo)圖像的每個(gè)像素出發(fā)計(jì)算它在源圖像中的對(duì)應(yīng)位置再去源圖采樣就不會(huì)有空洞了。這就是反向映射inverse mapping也叫反向坐標(biāo)變換。反向旋轉(zhuǎn)的本質(zhì)是求旋轉(zhuǎn)矩陣的逆。由于旋轉(zhuǎn)矩陣是正交矩陣它的逆就是它的轉(zhuǎn)置R^(-1) R^T于是反向映射公式為x_src x_dst * cosθ y_dst * sinθ y_src -x_dst * sinθ y_dst * cosθ代碼同樣簡(jiǎn)單def rotate_around_origin_inverse(img, angle_deg): h, w img.shape[:2] theta np.deg2rad(angle_deg) cos_a np.cos(theta) sin_a np.sin(theta) new_w int(abs(w * cos_a) abs(h * sin_a)) 1 new_h int(abs(w * sin_a) abs(h * cos_a)) 1 dst np.zeros((new_h, new_w, 3), dtypeimg.dtype) for y_dst in range(new_h): for x_dst in range(new_w): # 反向映射到源圖像坐標(biāo) x_src x_dst * cos_a y_dst * sin_a y_src -x_dst * sin_a y_dst * cos_a # 最近鄰采樣 x_src_int int(round(x_src)) y_src_int int(round(y_src)) if 0 x_src_int w and 0 y_src_int h: dst[y_dst, x_dst] img[y_src_int, x_src_int] return dst這個(gè)版本的效果比正向映射好得多但依然存在一個(gè)致命問題繞原點(diǎn)旋轉(zhuǎn)時(shí)圖像內(nèi)容會(huì)大量移出畫布結(jié)果圖雖然變大了但有效內(nèi)容殘缺。3.3 一個(gè)可視化實(shí)驗(yàn)看看繞原點(diǎn)旋轉(zhuǎn)到底丟了什么我拿一張 200×150 的測(cè)試圖上面畫了一個(gè)矩形、一個(gè)圓形和一個(gè)三角形標(biāo)志物分別做 45 度旋轉(zhuǎn)輸出了正向映射和反向映射兩張結(jié)果。正向映射的結(jié)果圖里矩形區(qū)域出現(xiàn)大量黑色空洞邊緣呈鋸齒狀原因是多個(gè)源像素競(jìng)爭(zhēng)同一個(gè)目標(biāo)位置或完全無像素落位。反向映射的結(jié)果圖沒有空洞但四個(gè)角的內(nèi)容全部丟失圖像主體嚴(yán)重偏移因?yàn)樾D(zhuǎn)中心是左上角頂點(diǎn) (0, 0)圖像中所有像素都圍繞這個(gè)頂點(diǎn)轉(zhuǎn)動(dòng)視覺上就是整張圖被“甩”到了右下方。這個(gè)實(shí)驗(yàn)的價(jià)值在于它直觀告訴你繞原點(diǎn)旋轉(zhuǎn)在圖像處理中幾乎沒有實(shí)用價(jià)值。圖像處理的習(xí)慣是繞圖像中心旋轉(zhuǎn)視覺上才符合“這張圖在原位置轉(zhuǎn)了個(gè)角度”的直覺。4. 繞圖像中心旋轉(zhuǎn)從公式到代碼的完整推導(dǎo)4.1 三步走平移→旋轉(zhuǎn)→平移繞圖像中心旋轉(zhuǎn)本質(zhì)上是把坐標(biāo)系原點(diǎn)從圖像左上角移動(dòng)到圖像中心然后在新的坐標(biāo)系下做旋轉(zhuǎn)最后再把結(jié)果平移回以左上角為原點(diǎn)的畫布坐標(biāo)系。這三步可以合成為一個(gè)復(fù)合變換矩陣是圖像旋轉(zhuǎn)最核心的套路。假設(shè)圖像寬 w高 h中心點(diǎn)坐標(biāo)為cx (w - 1) / 2 cy (h - 1) / 2繞中心旋轉(zhuǎn)角度 θ 的完整變換分三步將圖像中心平移到原點(diǎn)即所有坐標(biāo)減去中心坐標(biāo)|x1| |1 0 -cx| |x| |y1| |0 1 -cy| |y| |1 | |0 0 1 | |1|繞原點(diǎn)旋轉(zhuǎn) θ|x2| | cosθ -sinθ 0| |x1| |y2| | sinθ cosθ 0| |y1| |1 | |0 0 1| |1 |將中心平移到圖像中心相當(dāng)于把整個(gè)坐標(biāo)重新拉回原區(qū)域|x| |1 0 cx| |x2| |y| |0 1 cy| |y2| |1 | |0 0 1 | |1 |三步矩陣相乘得到最終的旋轉(zhuǎn)變換矩陣| cosθ -sinθ cx*(1-cosθ) cy*sinθ | | sinθ cosθ cy*(1-cosθ) - cx*sinθ | | 0 0 1 |這里要特別強(qiáng)調(diào)一個(gè)容易犯的錯(cuò)誤很多人直接用旋轉(zhuǎn)矩陣作用在圖像像素坐標(biāo)上忘了圖像像素坐標(biāo)是以左上角為原點(diǎn)的而且圖像坐標(biāo)系的 y 軸是向下的。在這個(gè)前提下公式依然成立因?yàn)樗举|(zhì)上是線性代數(shù)的坐標(biāo)變換與坐標(biāo)系朝向無關(guān)只要矩陣乘法運(yùn)算正確就能得到正確的像素位置。4.2 設(shè)計(jì)一個(gè)可復(fù)現(xiàn)的實(shí)驗(yàn)驗(yàn)證中心旋轉(zhuǎn)理論推導(dǎo)完必須用實(shí)驗(yàn)驗(yàn)證不然心里始終不踏實(shí)。我用一張帶明顯方向感的圖片做測(cè)試一張 400×300 的純藍(lán)色背景上放置一個(gè)紅色矩形和一個(gè)綠色圓形分別在右上角和左下角這樣旋轉(zhuǎn)后是否“繞中心轉(zhuǎn)”一眼就能看出來。驗(yàn)證方法的大體思路讀取原圖計(jì)算中心點(diǎn) cx, cy。取圖像中心附近的一個(gè)小點(diǎn)比如中心點(diǎn)正上方 50 像素的像素 P(200, 100)手動(dòng)計(jì)算它繞中心旋轉(zhuǎn) 90 度后的坐標(biāo)。旋轉(zhuǎn) 90 度時(shí) cos0, sin1代入公式x cx * (1 - 0) cy * 1 - (x - cx) * 0?這里直接代入完整矩陣公式更穩(wěn)妥x cosθ * (x - cx) - sinθ * (y - cy) cx y sinθ * (x - cx) cosθ * (y - cy) cy代入 θ90°cx199.5, cy149.5注意 OpenCV 坐標(biāo)下寬 400 的中心是 199.5 而非 200這一步對(duì)精確計(jì)算非常重要x 0 * (200 - 199.5) - 1 * (100 - 149.5) 199.5 49.5 199.5 249 y 1 * (200 - 199.5) 0 * (100 - 149.5) 149.5 0.5 149.5 150理論上中心正上方偏右的點(diǎn)旋轉(zhuǎn) 90 度后會(huì)落到中心正右方。實(shí)驗(yàn)結(jié)果也印證了這一點(diǎn)圖像中紅色矩形從右上方跑到了右下方綠色圓形從左下方跑到左上方整個(gè)圖像內(nèi)容以圖像中心為圓心轉(zhuǎn)了一圈驗(yàn)證了公式正確。4.3 繞中心旋轉(zhuǎn)的最小可運(yùn)行代碼完整代碼封裝如下這版代碼去掉了循環(huán)利用 OpenCV 的仿射變換函數(shù)直接完成import cv2 import numpy as np def rotate_image_center(img, angle_deg, scale1.0): h, w img.shape[:2] center ((w - 1) / 2.0, (h - 1) / 2.0) # 獲取旋轉(zhuǎn)矩陣 M cv2.getRotationMatrix2D(center, angle_deg, scale) # 計(jì)算旋轉(zhuǎn)后新畫布尺寸 cos_a abs(M[0, 0]) sin_a abs(M[0, 1]) new_w int(h * sin_a w * cos_a) new_h int(h * cos_a w * sin_a) # 調(diào)整矩陣平移分量使圖像在新畫布中居中 M[0, 2] (new_w - w) / 2.0 M[1, 2] (new_h - h) / 2.0 return cv2.warpAffine(img, M, (new_w, new_h))這里有一個(gè)關(guān)鍵點(diǎn)要說明cv2.getRotationMatrix2D返回的矩陣默認(rèn)情況下是保持原圖像尺寸不變也就是說旋轉(zhuǎn)后超出原畫布的部分會(huì)被裁掉。如果我們希望圖像完整地旋轉(zhuǎn)并放到一個(gè)更大的畫布上就必須手動(dòng)調(diào)整矩陣的平移分量。這就是代碼中M[0, 2] (new_w - w) / 2.0這一行的作用。5. 邊界處理旋轉(zhuǎn)后圖像被“切角”的系統(tǒng)解決方案5.1 三個(gè)典型場(chǎng)景保持尺寸、擴(kuò)展畫布、收縮畫布在真實(shí)項(xiàng)目里旋轉(zhuǎn)后的邊界處理經(jīng)常決定一個(gè)功能是否可用。不同的需求對(duì)應(yīng)不同的策略場(chǎng)景需求描述畫布尺寸策略典型應(yīng)用場(chǎng)景一旋轉(zhuǎn)后不改變圖像尺寸保持原圖寬高手機(jī)相冊(cè)預(yù)覽、實(shí)時(shí)視頻流處理場(chǎng)景二旋轉(zhuǎn)后完整保留全部圖像內(nèi)容根據(jù)角點(diǎn)坐標(biāo)計(jì)算新尺寸文檔掃描件旋轉(zhuǎn)、衛(wèi)星影像處理場(chǎng)景三旋轉(zhuǎn)后自動(dòng)裁剪到最大內(nèi)接矩形縮小畫布到內(nèi)接矩形圖片旋轉(zhuǎn)后想盡量保留主體、避免黑邊先說場(chǎng)景一。直接用cv2.warpAffine(img, M, (w, h))就是在保持原尺寸的前提下旋轉(zhuǎn)。這種情況下旋轉(zhuǎn)中心如果仍設(shè)為圖像中心那么圖像四角一定會(huì)被裁剪出現(xiàn)黑色三角區(qū)域。很多初學(xué)者第一次做旋轉(zhuǎn)就會(huì)遇到這個(gè)問題不知道怎么辦。場(chǎng)景二則需要計(jì)算圖像四個(gè)角點(diǎn)旋轉(zhuǎn)后的坐標(biāo)然后求出新畫布的包圍盒。這一步的數(shù)學(xué)很簡(jiǎn)單只需要對(duì)四個(gè)角點(diǎn)分別應(yīng)用旋轉(zhuǎn)矩陣即可def calculate_rotated_bounding_box(w, h, angle_deg): theta np.deg2rad(angle_deg) cos_a abs(np.cos(theta)) sin_a abs(np.sin(theta)) new_w int(np.ceil(h * sin_a w * cos_a)) new_h int(np.ceil(h * cos_a w * sin_a)) return new_w, new_h注意這里用的是角度的絕對(duì)值的三角值因?yàn)榻屈c(diǎn)旋轉(zhuǎn)后可能分布在四個(gè)象限取絕對(duì)值保證積分包圍盒覆蓋全部旋轉(zhuǎn)后內(nèi)容。5.2 角點(diǎn)坐標(biāo)精確推導(dǎo)與驗(yàn)證如果你需要在旋轉(zhuǎn)后精確知道某個(gè)點(diǎn)的新坐標(biāo)比如旋轉(zhuǎn)后矩形框的位置用于目標(biāo)檢測(cè)那就不能只計(jì)算畫布尺寸還要每個(gè)角點(diǎn)單獨(dú)算。仍以 400×300 圖像旋轉(zhuǎn) 30 度為例四個(gè)角點(diǎn)為(0, 0), (399, 0), (0, 299), (399, 299)繞中心旋轉(zhuǎn) 30 度后左上角 (0, 0) 的新坐標(biāo)為x cos30° * (0 - 199.5) - sin30° * (0 - 149.5) 199.5 0.866 * (-199.5) - 0.5 * (-149.5) 199.5 -172.77 74.75 199.5 101.48 y sin30° * (0 - 199.5) cos30° * (0 - 149.5) 149.5 0.5 * (-199.5) 0.866 * (-149.5) 149.5 -99.75 - 129.46 149.5 -79.71這個(gè)坐標(biāo)是負(fù)的說明左上角點(diǎn)旋轉(zhuǎn)后跑到了原畫布左上角之外。畫布尺寸計(jì)算得到的new_w和new_h就是為了把這些負(fù)坐標(biāo)包含進(jìn)來。最終在新畫布中這個(gè)角點(diǎn)的位置需要加上平移量 (new_w - w)/2 和 (new_h - h)/2 才是它在輸出圖像中的真實(shí)位置。這一步的實(shí)操經(jīng)驗(yàn)是做目標(biāo)檢測(cè)框或標(biāo)注點(diǎn)旋轉(zhuǎn)時(shí)要格外小心坐標(biāo)系基準(zhǔn)。很多人把原圖中的檢測(cè)框坐標(biāo)直接乘旋轉(zhuǎn)矩陣就以為完事了結(jié)果框完全錯(cuò)位。正確做法是把坐標(biāo)先減去中心點(diǎn)、旋轉(zhuǎn)、再加上中心點(diǎn)最后再加上畫布的平移補(bǔ)償。5.3 實(shí)現(xiàn)中的黑邊填充選擇無論哪種邊界策略旋轉(zhuǎn)后的圖像不可避免會(huì)出現(xiàn)無像素對(duì)應(yīng)的區(qū)域填充策略決定了最終的視覺效果。填充方式OpenCV 參數(shù)適用場(chǎng)景黑色填充(默認(rèn))cv2.BORDER_CONSTANT, value(0,0,0)技術(shù)驗(yàn)證、后續(xù)算法處理白色填充cv2.BORDER_CONSTANT, value(255,255,255)文檔圖像旋轉(zhuǎn)、生成預(yù)覽圖邊緣復(fù)制cv2.BORDER_REPLICATE圖像拼接前處理避免黑邊干擾反射填充cv2.BORDER_REFLECT紋理處理、數(shù)據(jù)增強(qiáng)中減少邊界偽影透明填充轉(zhuǎn) RGBA 后填充 alpha0貼圖素材、游戲資源、前景合成實(shí)際做圖像旋轉(zhuǎn)時(shí)我常用的做法是如果后續(xù)還要做邊緣檢測(cè)或特征提取千萬別用黑色填充因?yàn)楹谏吙驎?huì)產(chǎn)生虛假的邊緣響應(yīng)如果只是給人看的預(yù)覽圖白色或灰色更自然。6. 插值算法對(duì)旋轉(zhuǎn)質(zhì)量的影響為什么雙線性是默認(rèn)選擇6.1 插值是怎么來的反向映射得到的源坐標(biāo) (x_src, y_src) 往往不是整數(shù)比如 (100.3, 200.6)這時(shí)候就必須通過周圍像素的某種加權(quán)組合來估算該位置的像素值。這就是插值。三種最常用的插值算法對(duì)比插值方法原理計(jì)算量圖像質(zhì)量適用場(chǎng)景最近鄰取最近的整數(shù)坐標(biāo)像素最小粗糙鋸齒明顯快速預(yù)覽、像素風(fēng)格保持雙線性周圍 2×2 像素線性加權(quán)中等較好邊緣輕微模糊通用場(chǎng)景OpenCV 默認(rèn)雙三次周圍 4×4 像素三次加權(quán)較大最佳細(xì)節(jié)保留最好高質(zhì)量圖像處理、打印輸出雙線性的計(jì)算方式是先對(duì) x 方向做一次線性插值再對(duì) y 方向做一次線性插值總共用周圍四個(gè)點(diǎn)的像素值加權(quán)平均。例如目標(biāo)點(diǎn)對(duì)應(yīng)到源圖坐標(biāo) (100.3, 200.6)四個(gè)鄰域像素為f(100, 200), f(101, 200), f(100, 201), f(101, 201)先按 x 方向插值得到兩行中間值f_x0 f(100,200) * (1 - 0.3) f(101,200) * 0.3 f_x1 f(100,201) * (1 - 0.3) f(101,201) * 0.3再按 y 方向插值f_result f_x0 * (1 - 0.6) f_x1 * 0.6理解了這個(gè)過程你就知道為什么旋轉(zhuǎn)大角度時(shí)雙線性會(huì)比最近鄰平滑得多。6.2 一個(gè)直觀的對(duì)比實(shí)驗(yàn)我用一張帶斜線紋理的測(cè)試圖分別用最近鄰、雙線性和雙三次插值旋轉(zhuǎn) 15 度。從輸出結(jié)果看最近鄰的斜線邊緣呈明顯臺(tái)階狀視覺上像是低分辨率放大雙線性邊緣干凈平滑但仔細(xì)看有些微模糊雙三次邊緣更銳利高頻紋理保留得更好。在 OpenCV 里OpenCV 提供的插值參數(shù)包括cv2.INTER_NEAREST、cv2.INTER_LINEAR、cv2.INTER_CUBIC和cv2.INTER_LANCZOS4。實(shí)測(cè)下來INTER_LANCZOS4質(zhì)量最高但速度最慢全高清圖像下耗時(shí)是雙線性的 3 到 5 倍。絕大多數(shù)場(chǎng)景下雙線性是性能和質(zhì)量的甜蜜點(diǎn)這也是 OpenCV 默認(rèn)參數(shù)的原因。7. 逆旋轉(zhuǎn)驗(yàn)證一個(gè)被忽略但極其重要的調(diào)試方法7.1 用旋轉(zhuǎn)驗(yàn)證旋轉(zhuǎn)寫旋轉(zhuǎn)代碼最怕的是矩陣?yán)锏姆?hào)弄反了旋轉(zhuǎn)方向整個(gè)反掉。有一個(gè)特別簡(jiǎn)單的驗(yàn)證方法把圖像旋轉(zhuǎn) 45 度然后再旋轉(zhuǎn) -45 度即反向旋轉(zhuǎn) 45 度如果代碼寫得對(duì)兩張圖應(yīng)該完全重合存在插值誤差但肉眼難以分辨。這個(gè)方法的原理是正旋轉(zhuǎn)矩陣乘以它的逆旋轉(zhuǎn)矩陣應(yīng)該得到單位矩陣。在代碼上實(shí)現(xiàn)就是第一次用 angle45第二次用 angle-45兩次旋轉(zhuǎn)的矩陣乘積理論上等于 3×3 單位矩陣。實(shí)際測(cè)試中我的驗(yàn)證結(jié)果顯示旋轉(zhuǎn)回來之后平均像素誤差絕對(duì)差在 0 到 2 之間說明我的矩陣推導(dǎo)和坐標(biāo)處理都沒有問題。7.2 用角點(diǎn)坐標(biāo)驗(yàn)證旋轉(zhuǎn)矩陣第二個(gè)驗(yàn)證方法是拿四個(gè)角點(diǎn)做坐標(biāo)變換手動(dòng)計(jì)算旋轉(zhuǎn)后的坐標(biāo)再和代碼輸出對(duì)比。拿 200×150 的圖像中心點(diǎn) (99.5, 74.5)旋轉(zhuǎn) 90 度。它的四個(gè)角點(diǎn)(0,0) → (99.5 (0-99.5)*0 - (0-74.5)*1, 74.5 (0-99.5)*1 (0-74.5)*0) (174, -25) (199,0) → (99.5 (199-99.5)*0 - (0-74.5)*1, 74.5 (199-99.5)*1 0) (174, 174) (0,149) → (99.5 0 - (149-74.5)*1, 74.5 0 (149-74.5)*0) (25, -25) (199,149) → (99.5 0 - 74.5, 74.5 99.5) (25, 174)這四個(gè)坐標(biāo)構(gòu)成一個(gè)旋轉(zhuǎn)后的矩形它的寬是 174 - 25 149原高高是 174 - (-25) 199原寬。旋轉(zhuǎn) 90 度后寬高互換完全符合幾何直覺。這個(gè)驗(yàn)證方法不僅驗(yàn)證了矩陣本身還驗(yàn)證了畫布尺寸計(jì)算是否正確。7.3 在代碼里實(shí)現(xiàn)自動(dòng)化的驗(yàn)證函數(shù)如果你經(jīng)常寫幾何變換相關(guān)的代碼強(qiáng)烈建議把驗(yàn)證函數(shù)固化下來def verify_rotation_angles(angle_deg): img np.zeros((100, 150, 3), dtypenp.uint8) cv2.rectangle(img, (30, 30), (90, 70), (255, 255, 255), -1) rotated rotate_image_center(img, angle_deg) rotated_back rotate_image_center(rotated, -angle_deg) # 裁剪到原圖尺寸比較 h, w img.shape[:2] diff cv2.absdiff(rotated_back[:h, :w], img) return np.mean(diff)這個(gè)函數(shù)會(huì)輸出一個(gè)數(shù)字代表“轉(zhuǎn)過去再轉(zhuǎn)回來”的平均誤差。如果誤差大于 5基本可以斷言旋轉(zhuǎn)矩陣或者平移補(bǔ)償寫錯(cuò)了。這個(gè)方法我在做圖像配準(zhǔn)項(xiàng)目時(shí)幫了大忙有一次就是靠它發(fā)現(xiàn)單獨(dú)處理了中心坐標(biāo)但沒有補(bǔ)償新畫布平移量導(dǎo)致偏差一直固定偏在某個(gè)方向。8. 從旋轉(zhuǎn)到仿射變換統(tǒng)一視角看旋轉(zhuǎn)矩陣8.1 旋轉(zhuǎn)是仿射變換的特例圖像旋轉(zhuǎn)本質(zhì)上屬于仿射變換。仿射變換的一般形式是|x| |a b tx| |x| |y| |c d ty| |y| |1 | |0 0 1 | |1|其中左上角的 2×2 矩陣控制線性變換旋轉(zhuǎn)、縮放、剪切tx 和 ty 控制平移。繞中心旋轉(zhuǎn)的矩陣就是仿射矩陣的一個(gè)特例。用仿射變換的視角看旋轉(zhuǎn)有一個(gè)額外的好處你能順手把“旋轉(zhuǎn)平移”“旋轉(zhuǎn)縮放”組合成一次矩陣乘法而不是多次調(diào)用旋轉(zhuǎn)函數(shù)疊加。比如旋轉(zhuǎn) 30 度并且同時(shí)放大 1.5 倍矩陣直接相乘即可M_rotate cv2.getRotationMatrix2D(center, 30, 1.0) M_scale np.array([[1.5, 0, 0], [0, 1.5, 0], [0, 0, 1]]) M_combined M_scale np.vstack([M_rotate, [0, 0, 1]])這種組合在一次 warpAffine 中完成比先旋轉(zhuǎn)再縮放這種兩次變換更快、更少插值損失。8.2 為什么繞中心旋轉(zhuǎn)不用繞原點(diǎn)旋轉(zhuǎn)加平移替代有人可能會(huì)問繞中心旋轉(zhuǎn)的公式里已經(jīng)有中心平移到原點(diǎn)的步驟了為什么不能直接利用現(xiàn)成的cv2.warpAffine分兩次做從數(shù)學(xué)上完全可以先平移、旋轉(zhuǎn)、再平移。但在像素坐標(biāo)操作時(shí)每次變換都會(huì)引入一次插值兩次變換就是兩次插值圖像質(zhì)量會(huì)多損失一截。而且中間生成的圖像畫布尺寸如果處理不當(dāng)最終結(jié)果會(huì)出現(xiàn)內(nèi)容殘缺或坐標(biāo)偏移。所以實(shí)際工程中優(yōu)先用getRotationMatrix2D一次性生成復(fù)合矩陣一步到位視覺和精度都好得多。9. 常規(guī)旋轉(zhuǎn)之外的三個(gè)延伸方向?qū)懙竭@里常規(guī)旋轉(zhuǎn)的內(nèi)容基本講透了。但根據(jù)我在實(shí)際項(xiàng)目中的經(jīng)驗(yàn)還是忍不住想補(bǔ)充三個(gè)延伸方向它們?cè)诠ぷ髦谐霈F(xiàn)頻率非常高第一個(gè)是任意角度矩形的旋轉(zhuǎn)計(jì)算。在目標(biāo)檢測(cè)和 OCR 項(xiàng)目里旋轉(zhuǎn)的不是整張圖而是檢測(cè)框或文本框。這時(shí)要特別注意旋轉(zhuǎn)后的框不能再保持矩形要輸出四個(gè)頂點(diǎn)的新坐標(biāo)。做法是四個(gè)角點(diǎn)分別應(yīng)用旋轉(zhuǎn)矩陣不做包圍盒計(jì)算直接輸出多邊形坐標(biāo)。第二個(gè)是旋轉(zhuǎn)中心不是圖像中心的情況。比如你要做一個(gè)“表盤指針旋轉(zhuǎn)”的動(dòng)畫效果旋轉(zhuǎn)中心是表盤軸心而不是整個(gè)圖像的幾何中心。這時(shí)只需要把 center 參數(shù)換成軸心坐標(biāo)其他邏輯完全一致。注意旋轉(zhuǎn)后如果畫布擴(kuò)大了中心補(bǔ)償?shù)钠揭朴?jì)算依然要照著新畫布尺寸來。第三個(gè)是坐標(biāo)的反向映射在圖像配準(zhǔn)中的意義。做過圖像配準(zhǔn)或全景拼接的人都知道配準(zhǔn)的實(shí)質(zhì)就是求兩幅圖之間的變換矩陣。旋轉(zhuǎn)矩陣作為最基礎(chǔ)的變換矩陣能幫你理解其他復(fù)雜變換——比如求單應(yīng)性矩陣時(shí)其實(shí)就是在找一組參數(shù)滿足多個(gè)點(diǎn)對(duì)的變換關(guān)系。這個(gè)理解上的跨越往往就是從把圖像旋轉(zhuǎn)吃透開始的??偟恼f來常規(guī)旋轉(zhuǎn)最大的價(jià)值在于幫你建立一套圖像幾何變換的心智模型坐標(biāo)系、矩陣、映射方向、插值、邊界這些概念在任何幾何變換里都會(huì)遇到。把這套模型打牢了后續(xù)學(xué)透視變換、極坐標(biāo)變換、畸變校正都會(huì)順很多。這也是我為什么建議你有時(shí)間一定要自己寫一遍旋轉(zhuǎn)代碼而不是永遠(yuǎn)停留在cv2.warpAffine一行調(diào)用上。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲激情婷婷| 91九色首页| 久久久精品AV| 天天xxxxxx天天日| 丁香六月AV| 丁香av网| 婷婷激情久久| 国产又色又爽又黄又免费| 五月天亚洲色| www色五月天| 婷婷99狠狠躁天天躁中| 69色婷婷| 玖玖综合玖玖| 五月激情久久| 五月激情婷婷偷拍| 碰碰碰97国产| 亚洲网综合在线| 99色在线视频| 色综合综合色| 九九AV| 激情丁香五月天图片| 日日骑夜夜撸| 色综合婷婷| 九九色天堂| 激情综合丁香六| 99热一区| 五月天婷婷小说| 丁香五月香蕉| 91色久| 少妇综合网| 婷婷五月天论坛| 五月丁色AV| 91|九色|动漫| 日本色色色| 97人人操人| 国产在线激情视频| 久久九九思思| 97成人在线视频精品| 色逼综合网| 五月丁香久久| 久久9热好| 六月激情婷婷| 最近中文字幕在线中文视频| 婷婷色情 | 人人草人人爱| 99性爱视频| 日韩啪啪视频| 丁香激情五月天| 九九色婷婷| 综合一区二区三区| 五月停亭六月,六月停亭的英语 | 五月婷婷深深爱| 热久视频| 色99热| 99热精品观看| 久久免费精彩视频| 韩国真做片在线观看| 538在线精品| 久热九九| 日韩黄色中文字幕| 超碰色人妾| 久久九九囯产| 久久精品4| 超碰超碰在线| 色播五月丁香综合| 亚洲色优| 第四色五月天| 天堂伊人干| 天堂伊人干| 婷婷99视频在线| 碰碰碰97国产| 色久女| 综合欧美五月婷婷| 99久久6| 色综合天天综合成人网| 日本色色色| 夜精品无码A片一区二区蜜桃| 丰满少妇猛烈A片免费看观看| 96自拍视频九色在线观看| 五婷婷综合网| 日本啪啪天堂| 99精品7| 亚洲最大五月六月丁香婷婷| 99噜噜| 97在线精品| 婷婷五月色| 日本人妻伦在线中文字幕| 久久婷婷五月综合色欧美| 91在线精品一区二区| 爱狠射| 五月婷啪| 天天操电影院色狼性av| 色五月婷婷五月天| 色涩影院六月丁香| 678五月丁香亚洲综合| 色情激情五月| 伊人五月综合网| 欧美S码亚洲码精品M码| AA久久| 色五月之第四色| 六月婷婷亚洲| 丁香六月婷婷色XXXXX| 爱99干99| 五月婷婷干干干| 无码人妻电影| 久久婷狠狠色| 99re鈥哸鈥唙| 8090在线影视少妇| 久久婷婷网站| 亚洲色频| 啪啪啪丁香五月| 婷婷五月色情天| 国产另类综合| 激情五月天色播| 99天堂网最新| 婷婷亚洲在线| 久久久人妻| 欧美日韩成人在线观看| 第四色首页| 亚洲操B| 激情五月九九九| 五月香蕉综合| 婷婷成人视频| 91chinese在线| 婷婷五月久久| 免费视频WWW在线观看网站| 九九大香蕉黄色影院| 五月婷婷久久综合| www.狠狠| 天天拍夜夜撸| 色爱五月天| 人妻中文av| 综合逼五月激情婷婷| 激情综合网激情五月天| 亚洲免费av观看| 99热日本| 性欧美大战久久久久久久83| 99热热九九| 欧美在线视频免费播放| 亭亭玉月丁香| 五月天社区婷婷丁香社区| 国产黄大片在线观看画质优化| 久久九区| 玖玖婷婷五月天| 九月婷婷激情| 99免费视频| 天天操天天国产三级片处女学生妹| 同性gv国产精品一区二区| 日韩狠狠色| 色色色9 9 9| 婷激情五月| 日韩丰满少妇无码内射| 五月婷婷综合色拍| 伊人免费视频9| www.狠狠操.com| 婷婷五月天开心网| 99在线观看精彩视频| 大香蕉综合| 久久香蕉福利| 狠狠操狠狠操| WwW天天干| 五月天成人免费视频| 色综合久久综合中文综合网| 激情伊人五月天| 天堂色婷婷| 五月色丁香| 吾爱AV导航| 久久这里有精品视频| 色五月婷婷7777| 午夜九九电影| 9久热在线视频| 婷婷丁香激情| 五月天婷婷久草丁香| 夜夜干夜夜操| 欧美人人操| 色5月婷婷色| 97在线/亚洲| 七七九色| 亚洲精品乱码久久久久99| 国产亚洲99久久精品| 人人爽人人射-美女久久久久久久久久-成人AV | 9 大屁股在线视频精品| 五月丁香偷拍| 婷婷五月天堂网| 丁香激情六月天婷婷| 色综合久| 中文AV在线观看| jiZZdr| 九九视频免费| 激情五月四色| 欧美综合五月丁香六月婷| 中文字幕人妻在线| 日韩丰满少妇无码内射| 激情文学五月丁香六月婷婷| 五月丁香色| 丁香激情网| 亚洲综合视频天天精品| 色婷婷久久9.com| 九九精品免费| site:wpjngj.com| 鲁鲁色五月| 丁香婷婷色五月| 日本一级大片| 丁香五月天亚洲视频| 亚洲第一色网站| 噜噜在线| 久热只有精品| 婷婷五月天激情综合婷婷五月天激情综合| 一级韩国产精品毛| 99爱视频| 色五月亚洲| 国产精品久久久久久白浆色欲| 婷婷五月天成人| 97色伦另类图片小说视频 | 极品人妻videosss人妻| 国内一级精品| 精品欧美性爱超级爽| 五月婷婷之综合激情| 4399在线日本A片| 色五月网址| 色五月天成人| 夜夜天天久久婷婷| 激情小说五月天| 婷五月丁香| 一级性感毛片| 国产亚洲精品久久久久苍井松 | 激情五月丁香综合蜜桃| 日韩欧美老妇性视频91久久久| www.色综合| 天天干天天操| 色五月婷婷五月久久| 五月婷婷色白丝| 大香蕉综合在线| 日日夜夜婷婷| 亚洲久久婷婷丁香五月天| 色色色97| 狠狠色婷婷丁香五月| 成年人丁香五月| 五月婷婷成人| 亚洲欧州色情在线观看| 日韩操人| 亚洲热热视频| www,婷婷五月天,com| AV在线大香蕉| 99碰碰中文| 婷婷在线视频| 99热在线播放| 久99久在线观看| 天天日天天干天天插天天射| 99色视频在线观看| 激情99。| 婷婷五月天伊人在线| 五月天另类图片区99| tingtingcaobi| 99热亚洲精品| 97啪啪| 天天高潮夜夜爽| 五月丁香色综合| 色婷婷a三区麻| 亚洲成人网站在线播放| 午夜性爱影视一区77| 人人摸人人操人人爽| 超碰免费电影| 婷婷五月五月丁香| 欧美性生交xXxX久久久| 国产肥白大熟妇BBBB视频| 婷婷五月天色色| 亚洲中文乱字字幕在线永久| 丁香五月婷婷手机| 六月丁香婷婷五月| 婷婷五月亚洲一本在线丁香| 激情婷婷啪啪| 亚洲热久久| 婷婷十月丁香| 丁香五月五婷| 六月合五月婷| 狠狠色大香蕉| 久久这里只有精品22| 久久这里只| 丁香久久久| 婷婷色情 | 99热66| 狠狠色婷婷| 五月天天综合| 丁香五月婷婷影院| 亚洲九九视频| 丰满少妇猛烈A片免费看观看| 婷婷五月天成人| 日本久久网| 九九热在线视频观看| 亚洲区视频| 黄网免费看| 五月天综合激情网| 婷婷九月色| 亚洲操精品| 综合久久综合久久| 玖玖玖婷婷婷| 亚韩在线视频| 丁XX 成人| 极品五月天| 丁香婷婷视频一区二区| 中文av网站| 97色永久免费视频| 天天插天天爽| 婷婷色情 | 七月丁香五月婷婷在线| 看逼中文字幕| 久久女人天堂| 天天在线久久综合| 99热无码首页| 久9视频| 色情五月综合婷婷| 韩国中文字幕91| 丁香五月婷婷免费视频| 99热国产婷婷| 婷婷五月天成人五月天| 婷婷综合在线| wwww.色婷婷| 婷婷激情另类| 久久五月天激情视频| 婷婷丁香五月噜噜噜| 久久婷婷五月综合色和| 亚洲五月天婷婷| 中文av网站| 少妇水多A片太爽了| 久久受www免费人成| 99ri国产精品| 狠狠狠婷婷五月综合| 五月亭亭六月激情| www久久艹| 九九婷婷网五月天| 97偷拍对白视频| 色天使色婷婷| 五月激情婷婷六月丁香| 色五月综合资源推荐| 五月丁香色色| 婷婷大香焦| 大香蕉九九操| 好吊丝aV| 久久激情五月| AV人人操| www.精品久9| 伊人久久五月天| 91五月天| 婷丁香五月天| 免费看欧美成人A片无码| 六月激情婷婷| 婷婷五月天小说网| 好好干Av| 色婷婷五月天| 五月天婷婷色播综合在线| 99热91| 色婷婷88| 91丨九色丨国产打屁股| 天天色综合天天| 九九综合| 人人草成人视频| 五夜婷婷| 九九家庭影院| 91|疯狂丨高潮丨对白| 96人人操人人操人人| 26uuu精品一区二区| 色综合久久天天综合网| 五月天另类视频| 激情综合网丁香| 婷婷丁香六月天| 99热 这里只有精品 国产 日韩| 九九操操| 久久99最新| 国产乱子轮XXX农村| 色五月av伊人| AV亚洲在线| 丁香六月无码播放| 婷婷五月丁香91| 91.com男女操| 亚洲五月天第一综合干| 曰韩五月丁香色婷婷无码| 婷婷五月天激情综合深爱| 91无码色色| 久热精品视频| 色欲九区| 欧美A级成人婬片免费看理论| 热99热9| 97午夜一区二区| 婷婷五月天无码| 色五月婷婷影院| 久热人妻| 色婷五月| 丁香婷婷五月激情| 国产精品色情AAAAA片软件| 久久婷婷五月天激情唯美| 久久丁香婷| 狠狠综合网| 五月天开心色情网| 色色欧美色色色| 人妻精品一区二区三区| 色噜噜狠狠色综| 99在线精品免费视频| 色婷五月天激情| 成人精品人妻| 婷婷五月天桃花网| 欧美激情综合色综合啪啪五月| 国产色丁香| 沈娜娜av| 五月婷色| 国内外色色色色色成人视频| 国产精品五月丁香| 99九九精品视频| 亚洲亚洲人成综合网络| www.色婷婷.com| 激情综合网,五月| 丁香天堂夜| 九九成人| 九九热10| 丁香五月天啪啪| 人人色人人摸人人看| 五月丁香在线观看国产| 久久五月天婷婷| 开心婷婷五月天激情网| www.日日日.com| 99视频在线观看网址| 人妻丰满精品一区二区A片| 五月亭亭狠狠| 久久久久人妻中文| 在线VA视频| 91综合在线视频| 少妇伦子伦精品无吗| 任你操精品免费| 五月天婷婷导航| 色五月91| 国产精品成人AV在线| 热久综合| 秋霞av吧| 亚洲爆乳无码精品AAA片蜜桃| 综合99久久天天综合| 亚洲99视频| 大香蕉久| 丁香婷婷六月天| 色欲色香,www,com| 99在线看片| 在线观看国产高清视频免费网站| 五月丁香人妻| 五月丁香| 久久九九热视频| 五月天伊人| 五月天社区狠狠| 丁香五月婷婷呀| 久久九九怡红院| 五月天堂色| 色播播婷婷| 97超碰色| 色色色9 9 9| 大香蕉视频婷婷| 淫五月停停| 国产偷人爽久久久久久老妇APP| 九月丁香| 久久人妻精品| 91九色在线| 玖玖资源在线视频| 激情久久久| 丁香五月天视频| 五月婷婷在线视频| 天天插天天插| 激情五月黄色| AV在线二十六页| 国产超碰av| 色婷婷丁香AV综合| 亚洲蜜乳AV| 婷婷香蕉视频| 久久婷网| 日本的α片xxxwww| 亚洲综合婷婷| 天天摸色吧天天摸色吧| 夜夜躁婷婷AV| 丁香五月大香蕉| 亚洲激情婷婷| 97碰碰碰免费公开在线视频| 黄色片avv| 97人妻人人| 久久嘟嘟丁香| 色婷婷久久| 激情婷婷色小说| 久久伊人日日夜夜| 天天搞天天爽| 日本五月婷婷| 超碰九热| 超碰在线9| 亚洲欧美婷婷五月色综合| 久久久人妻人伦| 热这里只有精| 狠狠狠狠狠狠狠狠| 色色色com| 亚洲精品久久久久久久久久吃药| 久久久五月天婷婷成人网| 色婷婷综合丁香五月天| 婷婷五月色播网| 五月婷免费视频久久久| 99色精品| 亚洲五月婷婷| 99热欧美精品| 狠狠 婷婷| 亚洲综合丁香五月天| 久久WW| 99碰碰| 免费V片在线| 91婷婷丁香| 日日操夜夜爽天天天| 婷婷丁香人妻天天久久| 五月婷激情| 色99久草在线| 色色色激情| 五月婷婷激情四月| 色色亚洲五月天| 亚洲182在线观看| 亚洲六月婷婷| 天天做天天摸| 色婷婷六月| 男人視頻站| 丁香亭亭久久| 91色综合网| 性按摩玩人妻HD中文字幕| WWW,五月| 五月激情六月宗合| 婷婷五月天婷婷| 9999三级片| 六月 丁香 视频| 久99久热只有精品国产99| 六月色播| 97五月婷婷| 亚洲欧洲小视频9| 婷婷丁香熟女| 91fuliwang| 碰碰碰97国产| 9精品国产在热久久| 91丨九色丨国产| 97人人干视频| 亚洲天堂有码| 免费人人操| 色五月婷婷1| 久草九九| 色射影院| 色五月无码| 广东99色在线| 天天天天做夜夜夜夜做| 玖玖热视频| www婷婷| 丁香五月天婷婷中文字幕| 青青草原伊人网| 婷婷久久丁香五月| 天天操婷婷| 久操操| 97干干干丁香| 久热re在线视频| 玖玖午夜视频| 色婷婷狠狠干| 丁香社区婷婷五月| 久久亚洲天堂| 激情五月丁香婷婷| 激情五月婷婷综合秋霞| 色天堂操| 久久香蕉影院| 婷婷激情蜜桃玖玖丁香| 丁香六月色婷婷综合| 五月天婷婷在线视频| 五月丁香婷婷婷激情爱爱| 五月婷婷啪| 丁香六月天| 91久久久久| 激情伊人网| 丁香色色网| 丁香六月婷婷综合麻豆| 久久免片| 人人草人人舔| 婷婷五月天丁香久久| 久久久久网站| 婷婷五月天伦理| 婷婷开心久久| 99亚洲精品视频| 666555。COm毛片| 伊人大香蕉在线视频| 亚洲中文字幕网| 色综合开心五月深爱五月| 99这里只有| 色五月丁香网| 婷婷五月天大香蕉在线视频观看| 婷婷色中文字幕| 六月婷婷影院| 伦乱天堂| 日本道久久91| 久久久思思热| 日本五月天婷婷丁香| 思思re99视频在线观看| 97婷婷五月丁香| 91九色首页| 婷婷五月天六月| 爆乳熟妇一区二区三区爆乳照片| 激情小说色五月| 婷婷的久久网站| 欧美色欲色欲天天天www| www.黄色片-久久成人国产精品在线播放-999AV | 97人妻碰碰中文无码久热丝袜| 不卡在线超碰| 99亚洲天堂| 久久er99| 亚洲精品白浆高清久久久久久| 色色色在线观看| 五月丁香久久久日婷婷久久婷婷日| 99爱精品| 色www99| 色色热99| 婷婷欧美综合| 97人人看一| 五月丁香欧美综合免费视频| 色噜噜狠狠色综合日日| 1024操逼视频| 美女五月天| 国产偷人爽久久久久久老妇APP| 婷婷丁香色情| 四月婷婷五月丁香| 伊人激情综合| 久热这里精品免费| 91操人视频| 99在线精品视频| 99精色| www.97视频| 婷婷,五月天,丁香,第一| 色欲午夜无码久久久久久张津瑜| 影音先锋AV男人站| 九九热在这里只有精品| 国产精品人人做人人爽人人添 | 99色啊| 久热99| 色偷偷色婷婷| 性爱视频久久| 2016日日夜夜操| 五月丁香六月综合激情无码软件亮点 | 丁香六月激情综合啪啪| 韩国中文字幕91| 亚洲激情图文小说| 久久婷婷亚洲| 天天开心婷婷丁香五月| 99精品综合视频| 丁香婷婷网| 99热在线中文字幕| 超碰色婷婷| 色婷婷先锋| 狠狠色网| 超碰97干| 日韩影院三级| 99免费| 怕怕視頻| 狠狠操狠狠插| 夜夜做天天爽| 亚洲综合色成丁香五月色| 日本色婷婷综合| 九九成人视频| 精品国产va久久久久久久| 五月综合视频| 五月天婷婷色播在线网| 日韩在线视频9色| 不卡影院午夜理论片| 婷婷丁香五月天综合激情| 丁香婷婷啪啪啪| 激情五月天婷婷播播久久综合91 | 五月天婷婷色色| 婷婷色综合| 狠色狠色狠狠色综合网| 日本人妻伦在线中文字幕| 婷婷丁香五月激情图片| 久9精品视频在线| 亚洲第一精品网站| 婷婷爱五月| 影音先锋一区二区三区| 天堂AV三级| 成人综合网站| 婷婷干五月综合在线播放| 丁香五月婷婷久久久| 五月婷丁香| 久久99久久99精品免视看婷| www.夜夜操| 深爱网深爱综合网| 大香蕉丁香五月| 五月婷婷激情中文字幕| 99在线观看| 蜜桃五月天| 五月婷婷人妻| 外国碰视频网站97| 极品少妇高潮啪啪AV无码| 日日肏夜夜干| 国产精品日日躁夜夜躁| 99免费在线视频| 久热这里只有精品视频免费观看| 色七七九九| 久久五月综合| 色 色 色综合com| 丁香婷婷五月激情| 午夜不卡久久精品无码免费| 来吧亚洲综合网| 99色婷婷| 亲子乱AV-区二区三区| 五月天丁香成人| 六月丁婷婷| 色综合色综合色综合| 色激情综合| 极品人妻videosss人妻| 久久综合伊人77777蜜臀| 久色网| 久久婷婷综合五月趴| 91啪啪视频| 久久99久久99久久99| 精品成人在线观看| 五月婷婷欲色| 九九热a| 四季日韩AV无码综合| 久久久中文| www夜夜操comwww| 六月色色| 午夜日韩久久久网站| 欧美日韩99| 激情丁香五月婷婷| 激情欧美婷五月| 色婷婷88| 99九九99九九九视频精品| 小视频久久久aaa| Www,五月天| 九九免费精品在线视频| 99碰网站| 亚洲电影中文字幕| 成人精品在线| 久久婷婷色色| 色五月综合在线| 婷婷五月俺要去| 婷综合| 成人片在线免费看| 日韩成人精品中文字幕电影| 99操| 97色欧美| 国产在这里只有精品| 色综合色欲综合天天免费| 久久总和99| 久久色吧| www久久久久久久久久久久久久久久久| 深爱激情综合网| 国产成人AV在线播放| 99爱免费视频| 日日撸天天干| 日本五月婷婷久久久六月丁香| 五月丁香综合激情网| av人人操| 亚洲无码性爱| 欧美性猛交XXXX乱大交极品| 色人久久| 99热综合| 天天插天天爽| 99热在线精品观看| 色五月超碰| 激情小说婷婷| 丁香五月天成人网站| 天天摸天天日天天舔| 天天cha成人综合网| 99国产小视频免费观看| 欧美黑人大吊| 色五月天丁香| 色婷婷大香蕉| 亚洲第一黄网| 91综合国免费久入| 婷婷中文无码| Av大香蕉| 婷婷和五月天| 国产乱码久久| 国产精品色色666| 梁铮版蜘蛛女在线观看| 99r这里只有精品哦| 婷婷综合另类小说| 六月丁香视频网站| 99 色色吧| 五月婷成人网| 天天操夜夜玩!| 综合激情综合啪啪| 丁香六月成人网| 久久66精品| 欧美激情综合色综合色| 日本成人噜噜| 人人人人人人人草| 黄色AAAAA| 99爱视频在线观看| 综合一区二区三区| 黄色片区子| 婷婷激情社区| 99热精品在线观看| 99干日日干| 色色色宗合网| 五月婷婷九| 欧美日韩成人一区二区| 久久xxxx| 五月色无码| 久热中文字幕在线线观看| 亭亭五月天成人| 五月天综合视频网| 久久人人九九| 色婷婷狠狠18禁| 久色精品| 久热爱大香蕉在线蜜臀悦色| 99啪啪网| anquye伊人| 天天做综合网色综合| 五月婷婷天| 在线观看免费狠狠色丁香香综合| 亚洲第一第二网站| 无码少妇高潮喷水A片免费| 影音先锋秋秋五月婷婷| 婷婷丁香五月激情密臀av| 亚洲网视屏| 婷婷五月天,影院| 久久免费婷婷视频| 色综合久久中文| 丁香五月天激情| 亚洲无码性爱| 色六月婷婷| 天堂五月婷婷| 91精品久久久久、久五月天| 久草婷婷| 九九婷婷激情综合网| 永久免费一区二区三区| 婷婷色色狠狠| 玖玖资源站中文| 97人人射| 天天射天天操天天干| 色色色在线| 五月激情丁香五月宗合| 天天插综合网| 亚洲视频在线观看| 久久婷婷东京热大香樵| 狠狠舔| 夜夜操,天天撸| 狠狠爱综合网| 丁香深五月婷婷| 中文字幕在线观看视频www| 久久五月婷婷开心网| 九月av| 香蕉久久av一区二区三区| 哇嘎成人久久| 开心五月丁香综合久久| 99人妻碰碰碰久久久久视| 综合五月天| 激情图片99| 婷婷中文字幕版| 丁香五月日韩| 真实熟女-91九色| 久久久色婷婷五月天| 色婷婷五月天激情在线观看| 99精品在线| 久久WW| 五月丁香色婷| 五月天国产| 视频在线免费观看欧洲乱码| 五月天堂婷婷| 国产熟女一区二区三区五月婷| 久久激丁香| 婷婷和五月天| 久久婷婷六月综合综合| 五月婷婷丁香日韩在线| 天天 青草 制服丝袜 在线| 丁香五月欧美午夜视频| 九九草草逼| 99热无码精品| 9色视频在线| www亚洲无码| 五月婷综合性中心| 开心激情婷婷| 啪啪99| 六月婷婷中文字幕| 99婷五月| 日韩五月天婷婷| 九九九九这里只有精品| 五月丁香色婷基地综合久久| 人妻久久久久久久久久| 国外亚洲成AV人片在线观看| 97色在线| 久久久久久久97| 99啊精典免费视频| 久热视频这里只有精品| 国产午夜伦鲁鲁| 99re思思在线视频| 亚洲热热视频| 变态另类9| 久婷婷色| 国产综合81p| 天天爽天天爽视频| 日韩国产AV播放| 日日噜狠狠色综合久久| 精品无码久久久久久久久| 亭亭玉立国色天香| 久久综合性| 999激情视频| 五月婷婷九九热| 丁香香蕉婷婷| 色播激情五月天| 九九中文色色| 国产精品热搜丁香五月婷婷| 丁香五月-激情综合| 亭亭色天香| 欧美日韩精品人妻狠狠躁免费视频| www.激情五月天.com| 天天爽天天干| 亚洲五月天第一综合干| 五月婷婷激情网| 九九热这里只有精品首页| 99爱这里只有精品免费视频| 激情综合网五月丁香| 久久大香蕉同僚| 天堂资源欧日浪女在线播放| 色综合中文| 91干视频| 99A片| 99色区| 五月丁香综合网| 丁香 婷婷五月| 国产精品A成V人在线播放| 五月综合777| 久久综合26p| 99热中文字幕久久| 性爱七区| 五月婷婷六月天| 久久久这里都是精品| 色婷婷五月在线| 丁香综合伊人| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 丁香五月天天久久综合小说| 色播五月丁香| 99少妇精品| 婷婷五月AV| 亚洲性天天| 久久国产一区二区三区| 天天肏天天爽夜夜爽| ady狠狠入| 色情久久久| 日日天天天| 国产高清av黄色看片| 色婷婷激情五月天| 噜噜色五月| 婷婷五月天综合网| 色综合性视频| 亚洲视频1区| 色啪影院| 伊人六月丁香婷婷| 狠狠狠狠青草| 97操操操| 狠狠狠激情网| 国产44页| 五月天婷婷综合网| 日日肏天天操| 久热超碰91| 99热| 欧美成人A片AAA片在线播放| 另类综合激情| 国产欧美精品AAAAAA片| 五月婷婷中文字幕| 大香蕉久久| 五月成人丁香av91| 五月久久婷婷丁香| 五月丁香婷婷综合激情基地| 午夜福利8055| 色五月激情| A久网| 99日韩| 五月婷婷伊| 超碰成人在线观看| 青青草日本亚洲| 日本久久婷婷| 国产成人AV不卡| 色噜噜狠狠色综合网| 亚洲丁香五月深爱五月| 冬月かえでAV无码播放| 久久伊人五月天| 思思热精品在线| 激情涩涩网| 91日精品| BBWCUCKOLD精品熟妇| 婷婷刺激综合| 另类激情五月| 99超级碰免费视频| 99精品丰满| 五月婷婷久久综合| 五月天桃色深爱网| 综合久色五月| 色碰干| 丁香五月玖玖| 色色婷| 美欧成人视频| 2w在线视频| 欧美日韩91| 99re青青草| 亚洲亚洲人成综合网络| 综激情网| 思思热高清在线观看| 五月天六月天| 丁香五月色色| 日本全黄一级999| 性色做爰片在线观看WW| 婷婷综合五月天| 丁香久久| 五月丁香青草综合啪啪| 久久婷婷五月天| 日本色色网站| 伊人天堂婷婷| 久久小说| 精品久久人妻| 欧美日韩成人免费在线| www99热| 五月天久久成人| 五月婷婷xxx| 丁香婷婷综合激情五月色| www.色欲丁香婷婷| 精品夜夜澡人妻无码AV| 久久久com| 久色激情| 色 色 色综合com| 人人做人人看人人摸| 欧日韩AV| 777色婷婷爱五月| 伊人久久大香网| 97碰碰视频| 99精品手机在线视频| 国产成人综合电影| 大地9中文在线观看免费高清| 丁香五月婷婷啪啪| 91丨九色丨熟女|新版| 99热这里只有精品9| 五月丁香啪啪伦理电影| 五月婷婷九| 国产五月婷| 五月丁香直播| 欧美激情五月天在线观看| 五月天激情播播网| 99热啪啪| 99热99干| 二色av| 色九区| 99热婷婷| 玖热精品综合视频| 亚洲黄色影视| 婷婷色中文字幕| 9久久精品| 亚洲另类在线观看| 99热网站| 涩涩五月天综合| 国庆精品久久| 永久99免费视频网站| 亚洲视频在线观看99| 色情·com| 五月激情婷婷开心五月| 一區四區歐美日韓| 婷婷五月丁香在线观看| 婷婷大美在线| 怡红院院在线导航网| 欧美激情五月天在线观看| 777久久综合视频| 六月婷五月丁香| 思思热再线视频| 99热亚洲精品66| 五月婷婷之综合激情| 婷婷情爱五月天6| 人妻视频在线| 亚洲色久| 色婷婷久久| 日韩少妇内射免费播放| 久久九九激情五月天| 久久ri精品视频| 超碰人人操人人9| 射琪琪| 日本久热| 99re热精品视频国| hd五月婷婷在线| 久久久久久五月天| 久草热在线视频| 91热在线| 99久久综合| 激情综合网激情五月婷婷| 黄色AAAAAAA| 玖玖精品婷婷| 久久综合丁香五月| 婷婷丁香五月六月激情| 五月丁香人妻| 超碰在线视屏| CHINESE熟女老女人HD视频| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99re在线观看| 五月综合亚洲| 思思久久精品| 五月天综合在线| 久久综合久色欧美综合狠狠| 91九色PORNY中文啦| 9操在线| www.五月天性.com| 色婷婷成人五月| 婷婷激情四射| 色噜噜丁香| 天堂色色色| 免费国产VA国产免费| 韩国久久少妇视屏| 五月色丁香| 粉嫩AV久久一区二区三区| 免费V片在线| 色色五月婷| 丁香五月天啪啪激情综合网| 人妻视频在线| 99国产精品久久久久久久久久久| 色色色色色色色色色色色色色色,网站| 色99热| 五月开心婷婷| 91大神操美女| 三级毛片视频| 91久久综合亚洲鲁鲁五月天| 综合网激情五月天| 99久久这里只有精品| 五月丁香婷婷啪啪| 99热一本久道| 国内婷婷丁香社区在线播放| 天天操比比| 无码人妻少妇色欲AV一区二区| 亚洲综合在线网站| 日本va欧美va精品发布视频| 色综合天天综合成人网| 67194国产| 99热性色| 国产精品久久久60086| 大香蕉啪啪| 久草免费福利视频| 99在线精品视频观看免费下载| 99热最新| 国产午夜成人AV在线播放| 大香线蕉伊人| 狠狠五月天婷婷激情网。| 丁香九月激情| 有码一区二区三区| 久久婷婷五月国产激情综合片| 热99在线| 人妻丰满精品一区二区A片| 综合99综合久久久久久久| 五月天婷婷色小说| 久操婷婷| 99少妇精品| 久久久久99精品成人片| 中文AV网| 久久99网址| 色五月婷婷五月天激情综合| 熟女人妻一区二区三区免费看| 99久.| 五月天婷婷社区| 久久se 综合网| 丁香五月婷婷亚洲色图| 一级二级色大片| 99精品手机在线视频| 五月丁香 久久久| 天天精品视频免费观看| 九九热婷婷| 亚洲色色香蕉| 久久久av久av久片一区二区| 久久网站免费亚洲| 色婷操逼| 啪色综合| 丁香五月激情婷婷婷婷在线观看| 大香蕉久久视频久久视频| 五月色婷婷亚洲 | 无码视频国内精品久久久| 五月天五月色婷婷综合| 亚洲综合色婷婷| 婷婷五月丁香欧洲| 激情五月色播五月| 性爱激情综合网| 五月丁香网站在线播放| 亚洲无码99| 六月婷婷综合| www.婷婷六月天| 99狠狠| 九九综合| 天天se在线视频| 狠狠综合网| 伊人久久综合| 色五月激情五月| 婷婷人妻激情| 狠狠草在线观看| 手机在线视频观看9| 深爱激情丁香五月| 在线中文字幕免费视频| 丁香色情五月综合网站| 午夜天天精品视频| 激情综合婷婷| 日韩一区二区A片免费观看| 天天日天天摸天天| 最近中文字幕大全免费版在线 | 日本综合久久| 深爱激情网五月| 色婷婷五月综合| 丰满少妇猛烈A片免费看观看| 欧美婷婷六月丁香综合色| 九九色热| 人妻爽爽爽久久久久久久久| 狠狠操狠狠| 色色色在线免费视频| 国产精品色| 插少妇综合网| 久久六月婷婷| 婷婷五月天干干| 国产黄色av| 成人AV中文字幕| 丁香六月色婷婷| 99色精品| 99re这里只有精品免费| 777精品久无码人妻蜜桃| 婷婷丁香视频| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV| 久久成人天| 热婷婷在线视频| 九月婷婷色色| 日韩一级片| 91久热| 欧美韩日AAA网站| 婷婷五月丁香综合瑟瑟| 婷婷五月天六月丁香| 六月丁香色色| 思思re99视频在线观看| 久久亚洲色导航| 婷婷五月天天| 狠狠色噜噜狠狠狠狠综合| 99玖玖免费视频| 日日爽夜夜爽| 思思w99| 91婷婷五月丁香碰| 久9视频| 五月丁香六月激情综合啪啪| 亚洲精品无码A片一区二区| 色色com| 五月婷婷xxx| 色综合久久之分久久| 激情五月婷婷网| www.91操| www.色五月| www色五月| 97久久视频| 九九色网专区| 99久久精品国产色欲| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 天天操婷婷| 婷婷五月天天aV| 91色在线| 99亚洲精品| 色婷婷久久综合中文久久一本| av在线观看网站| 成人无码精品1区2区3区免费看 | 99五丁香月| www.超碰在线| 欧美综合五月丁香五月天| 日本久久超碰| 成 人片 黄 色 大 片| 五月天婷婷影院影院观看| www.色婷婷| 色五月婷婷丁香凹凸| 色综合色色| 久久久久久五月天| 色色色色综合网| 玖玖91| 五月综合无码| 五月婷婷开心五月| 天天日日人|