亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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)看著簡單但它的核心難點(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 軸正方向的夾角?,F(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。到這里你可能覺得簡單但千萬別小看這個(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θ代碼同樣簡單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è)源像素競爭同一個(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é)很簡單只需要對(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è)特別簡單的驗(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
返回資訊列表
看全色黄大色大片免费视频| 色www精品视频在线观看| 热99这里只有精品| 久久久久久久久久久精| 五月天色色色| 美女天天干| 91美女视屏| 国产精品点击进入在线影院高清| 爱爱动态试试看6 0秒| 人人操人人爽人人操人人| 高清不卡一二三区视频......| 91欧美大片| 97亚洲国产影视| 高清无码国产亚洲| 国产主播福利| 丰满人妻一区二区三区免费 | 性爱乱伦网址| 午夜一区| 国产精品网站www| 操逼片国产| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 2017大香蕉国产精品久久| 午夜无遮挡男女啪啪视频| 亚洲超碰综合网| 日本福利二区视频| 久久久久成人亚洲国产| 高潮毛片无遮挡高清免费| 免看60秒涩涩视频| 男人天堂久久日韩| 97超碰逼| 久久久9品一区二区三区| 影音先锋每日最新资源在线观看 | 热天堂一区二区| AV天天在线观看| 黄色人人| 熟妇xxxxx性春色| 欧美 亚洲精品首页| 夜夜骑天天燥| 丝袜天堂网| 欧美最婬乱婬爆婬性视频 | 天天射日日干| 88xx成人精品视频| 青草精品视频一日本久久久久网站| 开心五月激情网| 日韩欧美大力操| 亚洲国产另类在线中文| 日本性爱欧美性爱| 成年女人黄网站| 一区二区不卡视| 农村女一级毛卡片| 另类TS人妖一区二区三区| 狠狠久久手机视频精品| 99老司机精品视频在线观看| 亚洲最大的综合性av| 欧美日韩国内不卡| 97天天爽| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 九九拍拍精品视频在线播放 | 免费视频观看60秒| 美女丝袜激情小说| 亚洲欧美在线丝袜| 亚洲综合九九| 日韩精品永久在线观看| 五月丁香影视| 日本 欧美 亚中文字幕| 91国产精品在线看| 色网1| 97久久国产亚洲精品超碰热| 免费少妇一区二区| 91人妻视频在线| 亚欧美综合网。| 日日夜夜骚| 色综合美国| 国产熟女| 久久粉色| 看大黄色大片原件| 懂色天天爱天天日天天射天天澡| 天天躁日日躁AAAXX| 人妻中文在线| 日本天天吊| 欧美少妇熟女| 亚洲自拍欧美色综合| 999精品乱码| 国产乱伦亚洲色图高清无码| 午夜一区二区三区国产| 欧洲无码一区二区| 日本好吊色视频| 加勒比aⅴ| 青青草好吊色| 成人热久久精品| 欧亚韩国999| 天天色天天干天天爱| 日韩精品一区二区三区四虎影视| 偷拍网站久久男女男| 亚洲日韩久久精品一区| 三男一女不戴套的A片| 99精品久久久久久久婷婷蜜桃| 日韩中文字幕熟妇人妻 | 亚洲欧美色图小说| 欧美经典一区二区三区| 野狼激情网| 综合网亚洲1| 免费观看性欧美一级| 日韩人妻少妇 一区二区三区| 国产精品3| 亚洲国产婷婷在线播放| 九九热精品| 熟妇激情| 成人八戒网站| 日韩一区二区精品视频| 98超碰欧美| 五月天激情小说| 亚欧美综合网。| 亚洲精品一区二区精华| 亚洲综合网图| 国内精品嫩模A∨私拍小视频| 久99热| 夜夜黄| 欧美片第一页| AND人妻系列| 男人天堂2017| 亚洲精品精品一区二区| 97大色网| 综合色一区三区二区| 小情侣高清国产在线视频| 色网综合网| 亚洲囯产精品女人久久久| 中文字幕97色| 狠狠操夜夜| 亚洲吊色| 久久亚洲国产成人| 欧美一区二区成人一卡| 日韩三级天堂在线观看| 9I1性色影院| www网站黄| 欧美精品,四区。五区| 中文字幕后石码三区四区| 久久99国产综合精品女同| 欧亚日韩中文在线| 亚洲日韩乱码中文无码蜜桃臀网站| 日本欧美一区二区三区免费| 久久大陆| 国产一级高跟丝袜| 精品妇操一区二区三区| 亚洲无码99| 97免费在线视频| 精品国产一区二区三区久久久蜜臀 | 91狠狠| 在线天堂999| 日韩福利综合一区| 玖玖爱伊人玖玖爱| 开心五月婷婷| 亚洲**2021在线观看| 亚爽爽爽爽爽爽爽爽| 中文字幕一二区二三区人妻专区| 久欲AV| 中文字幕在线播放2中文字幕在线观看2 | 亚洲在线网站| 九色 蝌蚪 熟女自| 九九热男人天堂| 91人妻最真实刺激绿帽| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲熟妇极品| 天天干夜夜操网| 91九色丨风韵犹存| 亭亭在线资源| 好看的91视频| 三级三级三级日本99| 熟妇的味道HD中文字幕| 欧美91变态| 久久久成人精品| 亚洲人妻一区二区三区| 国产午夜无码片在线观看影视| 淫荡网址| 青苹果影院男人的天堂| 久久久久久国产精品| 密乳无码| 91看黄片| 日影院久久婷婷夜夜网| 国产美女激情| 国产伦精品| 99久国产精品午夜性色福利| 激情小说激情视频| 青青草吊丝| 偷拍自拍在线视频观看| 18禁免费视频| 五月天激情网站| 免费草草草草草视频| 亚洲 欧美都市激情| 色噜噜国产在线| 亚洲欧洲日本精品中文a∨| 无码伊人久久大杳蕉中文无码| 丁香色狠狠色综合久久小说| 激情网色| 四虎午夜影院| 欧美夜夜草视频| 狠狠爱夜夜| 老司机午夜精品福利视频一区二区| 五月天精品| 91久久久亚洲| 天天做天天爱| 性色aV一区二区三区噜噜| 国产传媒日韩| 伊人九九| 18精品一二区| 欧美色图片色哟哟| 蜜臀99久| 中文字幕欧美丝袜07资源| 欲香欲色综合天天伊人| 亚洲一卡2卡3卡4卡乱码网站 | 国产亚洲精品第一最新| 色婷婷五月天| 操比国产| 国产真实野战在线视频| 亚洲天堂中文字| 99re视频这里只有精品| 91精品操美女| 日本九九九九| 在线 制服丝袜中出 人妻| 狠狠干狠狠干| 26UUU欧美日本| 色综合99999| 亚州日韩97| 色狠狠综合噜一二三区| 97视频在线播放| 久久风骚城市| 午夜操操操| 亚洲人妻精品一区二区| 丝袜美腿av女优在线| 蜜臀久久99精品久久久久| 午夜精品久久久| 免费的黄片有限公司| 免费作爱一级视频| www.天天干| julia在线观看久久| 亚洲欧洲精品成人| 欧美精品系列| 人人玩人人添人人澡免费| 天天做日日做天天欢。| 日韩无码嘿咻黑热久| 丰满搜索结果 -第18页- 久久高清无码| 欧美色997| 69精品少妇一区二区三区蜜桃| 殴美在线AⅤ| 久草午夜| 精品性爱一二三区| 91色综合激情| 五月天精品| 日韩人妻丝袜中文字幕| 999亚洲国产视频| 丁香五月久久| 亚洲资源网| 少妇淫妇久久久久久久| www国产天美久久久| 九九Av| 黑人天8A∨高清网站| 舔人妻中文免费视频| 秋霞Av理论一级在线| 色伊人91| 综合网久久| 97色欧洲| 欧美激情中文字幕另类小说| 美女大乳久久久久久久女人18| 老熟女综合网| 日韩精品永久在线观看| 夜色91| 黄色人人| 91成人国产综合久久精品蜜月| 成人AV在线网站| 亚洲综合另类小说色区亚洲成av人片在www| 久久久久9| 国产精品欧美激在线| 欧美宗合网| 色久桃花影院在线观看| 久久久9视频| 亚洲交换| 91人人臊| 夜夜无码| 日本中文字幕在线电影| 2017超碰| 嫩草影院性色| 色偷偷男人的天堂麻豆| 亚洲图片婷婷五月天| 亚洲91极品| 99婷婷一区二区| 国产三级中文字幕粉嫩| 人妻黑丝袜电影| 无码男人天堂| 日韩无码黄色片| 久久伊人在线五区| 国产视频人人网| 97在线国产精品| 精品人妻一区二区蜜桃视频| 午夜男人一级A片7777| 激情综合网一盗摄| 淫荡少妇免费| 国产热av| 97人人草| 免费试看60秒| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | wwwcaobibi| 亚洲综合夜色| 第一高清av中文字幕| 99国产精品自在自在| www.婷婷五月天| 99999久久精| 亚洲AV成人在线| 欧美色网络| 啊啊啊操一区| www.色吧5.com| 久久一二三四五六七八九区区| 在线综合 亚洲 欧美中文字幕| 干b在线性社区| 日本中文熟女视频| 亚洲永久永久永久永久一级一级一级精品 | 黄骗免费网站| 欧美性生活内射| 91成人在线免费视频| 人人爽夜夜玩视频| 欧美亚洲丝袜人妻制服99| 蜜臀久久99精品久久久| 亚州熟妇精品| 人妻激情在线视频| 五月天综合在线| 欧美91在线| 磁力99AV| 俺去俺来也在线www| 欧美性少妇| 好吊色在线观看| av网站免费线看| 黄色一区三区| 翘臀vidoes| 天天日天天干天天色| 亚洲熟女偷拍在线观看| 久久精品人体| 中国东北熟女老太婆内谢| 91观看 国产白丝| 日韩人妻精品中文字幕| 中文字幕日本久久| 91新在线欧美| 欧美成人性爱视频大全| 亚洲色图尤物视频| 日韩图色| 欧美日韩精品青青| 色女综合| 激情专区综合| 乱伦3P视频| 试看日韩黄片| 久久人妻熟女一区二区| 亚洲性猛| 欧美综合97www| 亚洲AV无码黄色强奸| 久久久久国产精品久久久| 狠狠做深爱婷婷久久二区| 亚州国产精品乱| 国产黄片在线免费观看| 超碰日韩人妻| 这里只有精品97| 老司机午夜福利视频一区二区| 五月丁香在线| 亚洲色久| 抽插无码高清一区| 91小视频| 免费黄色A片| 热无码中文亚洲H一道本一区二区| 九久久九九久视频| 97综合久第一页| 一直超碰| 操死我了嗯嗯嗯| 啊啊啊用力在线观看| 大香蕉黄色一区| 亚洲国产一级精品毛一级精品看免费视频 | 4tube欧美女厕所| 欧美影音在线| 日本三级韩国三级美三级91| 亚洲精品一区二区免费在线观看| 欧美色图成人网一区二区 | 永久电影三级在线观看| 欧美日韩插逼视频| 久久久精品中文字幕爱豆| 亲子敌伦对白在线播放| 久久综合97| 亚洲天堂另类| 色图综合| 亚洲国产精品无码AV久久| 欧美加勒比| 久久精品店| 亚洲乱码尤物193YW| 97资源视频| 国产午夜在线观看视频| 囯戸精品高潮呻吟旡码| 亚洲无码免费看| 国产精品自在线发布| 乱论91| 久久国产性爱| 乱色视频中文字幕| 青青网三级视频| 青青11操操操操操操操操| 91在线超高颜值国产| 一本大道久| 女人天堂av在线播放| 在线亚洲 欧美 日本专区| 国产精品白丝AV| 有码人妻系列| 日日噜噜夜夜久久亚洲一区二区 | 97超碰久久| 亚洲综合五月天| 亚洲男人天堂Av| 91AV老熟女视频| 国产中文福利| 久久精品成人| ji熟女.com| 最新欧美色网| 妇女视频网站| 欧美线天码中字| 一区二区三区不卡视频| 亚洲欧美日韩制服另类| 亚洲色图日韩精品| A V少妇特黄三级| 一区,二区,三区网站| 亚洲诱惑| 91天堂网| 亚洲黄色网址视频| 一本精品日本在线视频精品| 国产在线视频午夜精华在| 性久久| 九九色热| 国产不卡中文字幕免费avi| 福利五区| 欧美一二三级精品在线| 久久小视频| 97天天操天天干| 日骚逼视频| 亚洲精品毛片在线观看| 亚洲另类久操网| 少好三P| AAAA级日本片免费视频| 国产色呦呦| 操b网站亚洲无码| 青青五月天| 韩国一级婬片A片无码天美| 国产激情综合| 精品中文一区二区| 天天色天天干天天爱| 又大又白奶子| 97国产|免费| 涩涩这里只有精品视频| 午夜久久一区二区无码中出| 青青青在线高清视频在线一二三四区| 免费精品中文字幕| 易易A毛视频| 少妇高潮对白在线观看| 天天日夜夜| 日韩综合97P| 日韩日本欧美在线观看| 99在线免费观看| 免费成人在线观看91| 亚欧性爱在线无码| 男人天堂无码| 九九99久久| 偷拍亚洲情色| 亚洲一本色道中文无码aV天美| 国产天天看| 伊人网免费视频| 一区二区三区网站日日骚| 中国91AV| 激情深爱五月天| 久操免费视频| 亚洲人人操| 婷婷激情丁香| 9 9精品一区二区三区| 福利五区| 五月丁香色婷婷| 日韩欧美麻豆| 色色色99| 啊啊啊啊啊啊在线| 国产不卡精品91| 97超碰美女| 禁片 高清 在线观看视频网站| 亚洲综合在线91| 久操热| 国产精品夜夜夜| 探花激情视频| 99热伊人| 亚洲。日韩。欧美| 岛国片在线视频网站| 超AV色女| 精品国产一区二区三区在线播出| 亚洲自拍一区夜夜操| 91丨九色丨国产丨人妻在线| 天天综合麻豆视频| 凹凸视频特色日本特黄| 精品国产乱码久久久久久网站入口| 精品女人999| 国产无码精品成人| 亚洲精品 欧美精品| 日本视频一区二区三区| avav青青草久久夜| 成人婷婷丁香| 人妻献身系列第54部| 国产欧美后入| 色五月av| 国产乱伦性爱区| 综合网亚洲1| www五月| 91丝袜在线观看| 成人精品一区二区三区| 婷婷色五月激情| 免费在线看黄片av| 丝袜狂射91| 九月婷婷综合| 精品国产一区二区三区在线播出| 久久精品日韩专区免费观看| 丰满人妻一区二区三区四| 日韩综合成人免费视频| 草久在线| 亚洲美女 晚间男人天堂 | 99热婷婷一区二区三| 熟妇人妻一区二区三区| 日美免费黄片| 免费岛国一级片| 丝袜视频网国产90| 激情文学 国产一二三aV| 亚洲免费人妻在| 国产福利视频精品视频| 欧美双插| 9ⅰ久久久天天| 五月激情天| 日韩成年人性爱视频| 久久一区二区蜜桃| 九九九九九精品十六| 九九精品热| 久操网视频| 性感女人网页在线观看视频| 婷婷色婷婷| 亚洲情色视频| 久久久久九九九九九| 一区麻豆 高清中文字幕| 人妻av在线| 黄骗免费| 91影库| 99热这里只有精品18| 啊啊啊久久久视频| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 手机久操欧美综合色码| 成人夜夜爽| 免费黄色片子| 亚欧高清在线| 最新中文字幕在线亚洲| 亚洲激情综合另类男同| 91精品国产91久久青草| 青青在线视频日韩欧美| 992大香蕉| 中文字幕欧洲有码| 懂色av中文字幕| 久久久久久少妇| 青青草乱入乱欲视频在线观看| 综精品久久久aaaa| 亚洲AV资源| 厕所偷拍在线| 亚洲91亚洲| 青青草日逼视频| 国产原创精品| 日本97久久久精品| 精品美女在线视频| 亚洲在高跟鞋自慰久久在色线| 色女99一级片在线观看| 欧美一二在线| 大乔未久88一区| 亚av顶级裸体一区二区三区四区五区| 久久爽爽精品| 亚州九九九精品视频| 久久黄色网址| 激情文学 亚洲图片| 日韩一级特黄av毛片| 草B在线| 黄页网站成人免费| 亚洲精品黄码久久久久| 午夜男人的天堂| 干少妇视频| av影片在线观看不卡| 91精品国产91久久青草| 男女激烈网站最新| 91爆操视频| 97国产成人精品免费视频| 中文字幕成人| 9热9热综合网| 中文字幕人乱码中文字的预防方法 | 色哟哟 日韩精品| 国产特级毛片AAAAAA高潮流水 | 青青伊人这里只有精品| a在线观看| 四虎AV无码| 福利一级版子| 91黄站| 欧美中文字幕日韩在线| 色嗨嗨在线| 九九99久久| 欧美一二三区四五区| 熟妇国产免费一区| 性色aV一区二区三区噜噜| 久久性爱视频99| 丝袜熟女一区二区三区| AV天天在线观看| 少妇内射www在线观看视频| 久草色在线观看| 1769国内精品视频| 久操婷婷| 日韩不卡网操逼中文字幕日韩| 欧美色图亚洲色,麻豆| 91精品国产91综合久久蜜臀| 啪啪资源网| 91人妻超碰| rivers-china.com| 91精品久久久久五月天精品| 国内精品嫩模A∨私拍小视频| 久久久影院| 丝袜狂射91| 国产成人精品必看| 久久99热这里只频精品6学生| 人人摸人人干| 天久久久噜噜噜久久国产精品爽爽| 操美女高潮抽搐白浆| 变态乱伦伪娘灌肠一区二区| 蜜臀av在线播放一区二区三区| 小草av不卡亚洲二区| 一级性爱视频免费观看 | 大干人妻| 亚洲欲色9532548967一区| 天天综合青苹果| 伊人欧美大香蕉视频| 国产精品国产亚洲区艳妇糸列| 精品亚洲俞拍视频一区| 久久六六| 亚洲激情深爱文学小说网站| www.97在线| 少妇二级| 竹菊一区二区三区AV线| 久久久国产成人一区二区三区在线| 99这里都是精品| 亚洲av无码国产精品字幕| 狠狠干,狠狠操| 丝袜美腿91| 久久人人爽人人爽人人片Ⅴ| 蜜桃臀AV在线| 人妻在线视频| 欧美亚洲色的图| 亚洲乱码尤物193YW| 亚洲性猛| 精品国产一级久久| 92性色国产午夜福利在线661| 欧洲色| 97国产|免费| 丁香成人五月天| 熟女少妇视频| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 密桃99999| 9久久精品| 中亚av| 激情色图| 免費人妻夜夜爽天天爽爽一区| 精品一级毛片在线观看| 亚洲欧美爆| 69av一区二区三区| 丝袜美腿射精91| 国产精品无码论坛| 国产久久天堂资源| 日韩女优在线| 成人av影院在线观看| 97在线资源| 91超级碰| 试看日韩黄片| 激情欧美日韩女同久久| 中文自拍欧美影视| 天天拍夜夜| 亚洲综合性感在线| 久久久无码av精| 日韩精品 欧美激情| 香一区二区三区| 在线观看高清AV| 欧美色图99| 午夜福利久久久噜久噜久久综合| 中文字幕一区二区日韩网| 超碰97久久国| 欧美日不卡| 91精品久久久久五月天精品| 国产三级中文字幕粉嫩| 91丝袜美女| 亚洲砖码砖专无区2023| 日韩在线国产字幕| 伊人色综合欧美| 乱人伦 国语对白:视频直接看| 国产强奸AV在线| 欧洲精品欧洲精品| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 天天综合有色网| 亚一综合久久久久久久久久| 亚洲高潮影院| 狠狠躁天天躁日日躁| 日韩成人电影AV| 欧美激情另类一区二区| 午夜毛片亚洲精品片国产久久久| 亚洲性图91| 精品四五区| 在线人人人人人人精品超| 呦呦一区| 亚洲AV永久无码精品成人调教| 蜜桃久久久久久久| 26uuu欧美| 无码av永久免费专区网站| 亚洲97综| 久久久涩| 超碰97久久国| 五十路熟女工口| 亚洲精品久| 超碰国产在线| 免费在线观看国内色片网站网址| aaa亚无码专区| 欧美碰碰综合色| 亚洲脚交| 国产精品乱码久久久久久久| 久久精品老司| 开心激情婷婷| 亚洲AV操| 天天爱天天操| 日韩无码三级影院| 久久久精品网| 久久黄黄黄| 久久精品无码一区二区三区| 久久99草| 欧美一区二区日韩三区| 性天堂| 色九久| 69久久| 亚洲另类色综合网站| 91 综合 色| 老熟妇一区二区三区啪啪| 精产国品一区二三产品| 欧美三级一级| 超碰性爱97| 熟妇一区二区三区| 欧美日韩免费专区在线| 麻豆av一区二区三区| 欧美熟爽综合| 蜜桃精品一区二区三区ww| 玖色AV| 97干com| 蜜臀AV成人精品蜜臀AV久久| 久久9亚洲| 亚洲视频,小说| 九九夜精品九九在线| 操一区| 91女优在线观看| 国产超碰97| 色97干| 国产精品午夜AV完会免费 | 91在线超高颜值国产| 色网在线视频观看免费| xxx0国产在线播放| 欧美疯狂做爰xxxx| 精品色色| 性色高清在线| 欧美在线色| 久久噜噜噜精品国产亚洲综合| 蜜桃传媒视频第一区入口在线看| 天美麻豆一区二区三区| 婷婷爽人人婷婷爽视频| 亚洲无码电影久久久| 亚洲黄色视频在线观看视频| 黄色片,com| 国产一级黄色片在线观看| 天天躁日日躁AAA片李宗瑞| 五月丁香六月激情| 欧美色图亚州激情| 综合天天。| 日本精品五区| 欧美日韩国产中文精品字幕自在自线 | 柠檬AV导航| 欧美性天天影视| 成人天天看站长推荐| 国产日产欧产美韩系列麻豆免费| 中欧人妻丝袜中文字幕| 中文字幕一区二区日韩网| 蜜桃无码AV一区二区| 久久精品亚洲婷婷| 使劲用力艹少妇视频一区二区| 97操碰| 在线观看亚洲成人精品| 操逼日韩无码 | 精品制服美女中文一区二区三区| 欧美日韩久久精品爱爱| 午夜.DJ高清在线观看免费7| 涩五月婷婷| 欧美乱妇狂野欧美在线视频| 高清孕妇孕交 交| 国产啊v在线免费播放| 天天干一干| 操逼无毒无码免费视频| 四虎国产精品永久在线囯在线| 日本道久久综合色色| 中文字幕av久久爽Av| 一区二区无码视频| 欧美另类精品xxxx| 人人妻人人操人人乐| 青青操日韩| 二男一女成人A片| 日韩天堂av电影在线观看| 精品少妇高潮久久| 芊芊操逼视频无码| 精品人妻夜夜草| 久热热| 欧美中字二区| 亚洲日韩精品一区二区| 亚洲制服欧美另类内射| 久久夜嗨| 亚洲影院成人| 国产av高清版| 999热这里只有精品| 黄色小视频日本txt| 色九九九九| 明星性猛交ⅹxxx乱大交| 国产精品电| 色色色色电影网| 五月婷婷影院| 97超碰伊人| 亚卅熟女乱色| 亚洲自拍青操视频| 国产精品激情久久久久久久| 99re69综合| yw尤物av无码点击进入麻豆| 夜夜爽爽爽| 蜜臀99久久国产| 色情五月综合婷婷| 亚洲丝袜二区在线| 国产超碰| 免费视频观看60秒| 色色操| 精品美女少妇一区二区| 六十路日本| 国产精品白丝AV| 日本欧美国内在线| 国产伊人精品在线| 激情综合色| 色妇综合网| 麻豆 欧美 日韩| 欧美亚洲中文| 蜜桃久久久久久久| 久久久久久亚洲中文| 久久人妇| 亚洲精品无码少妇久久| 正宗无毛一线天嫩逼| 超碰在线国产| 97色97干| 亚洲自拍欧美国产首页网曝| 免费一级黄色录像影片| 亚洲清纯唯美| 天天爽天天| 操屄日韩| 怡红院成人av| av天堂手机版追回| 亚洲高清欧美总合| 国内黄色精品| 播播亚洲小说亚洲| 日韩精品午夜操呦呦不卡影院| 尤物一级在线免费观看| 人妻熟女av国产网站| 久久久亚洲精品电影免费看| 亚洲国产成人7777| 亚州色图片在线色| 97久久视频| 秋霞午夜成人福利片片| 一区二区三区男人的天堂| 一级片视频啪啪| 久久av成人无码免费| 五十路熟女,国产欧美精品区一区二区三区| 亚洲欧美国产其他二区| 97精品网| 超碰地址97| 七久久久| 精品一啪| 男人的天堂在线有码| 啊啊啊不要啊啊受不了了视频在线| 人人摸人人舔一区二区| 青青草好吊色| 九九久久九九久久| 综合熟妇一区二区三区| www.婷婷| 91丨人妻丨国产丨丝袜| 夜夜人妻爽| 日本福利二区视频| 香蕉99秘 一区精品蜜桃臀| 婷婷五月天影院| 亚州综合AⅤ| 国产精品老师| 国产人妖的免费的视频| 亚洲欧美国产精品久久久久久久| 翘臀vidoes| 天天草天天干天天日| 亚洲国产另类在线中文| 人人九九精| 超碰1024久久| 狠狠干,狠狠操| 色网在线视频观看免费| 亚洲精品九九九| 97久久精品不卡| 亚州色图狠狠干| 67914亚洲精品| 性爱乱伦网址| 亚洲天堂一区二区久久| 一区二区中文| 亚洲综合色图欧美| 经典丝袜一区| 亚洲情色在线| 刺激性视频黄页| 国产精品交换一区二区| 一区三区啪啪| 久草国产在线视频| 香伊人在线| 亚洲精品一二牛牛| 1769一区二区| 无码人妻精品一区二区三区99不卡| 日逼97| 后入式999| 久久一本大香蕉 | 四虎在线视频| 97久久久久久久久久| Aa东京男人的天堂| 欧美 日韩 婷婷 五月| 夫妻四区五区六区| 91人妻人人妻| 色噜噜综合在线| 99热在线观看| 婷婷在线播放| 亚洲精品丝袜-不卡成人免费……| 亚洲欧美经典一区二区| 国产情侣自拍在线播放| 无色无码| 在线v中文字幕一区二区三区| 啪啪免费| a v网站在线播放| 国语国产操逼伊人AV网| 岛国在线一区二区三区| 午夜120视频在线观看| 黑人操一区二区| 亚洲黄色网址视频| 亚洲免费人妻在| 日韩久久激情精品| 五月天激情四射| 久久xx| 老鸭窝亚洲毛片| 久久9亚洲| 亚洲美女色图| 狠狠操狠狠燥| 麻豆一区二区AV天美| 亚洲欧美在线丝袜| 天天操夜夜操| 老熟女搡BBBB搡BBBB视频| 天天操天天射天天日| 亚洲砖码砖专无区2023| 久久激情综合| 床上啊啊啊一区二区三区| 清清一区二区三区四区不卡视频| 欧美第38页| 欧美 综合 亚洲| 国产搭汕a级片| 久久国产成人精品国产成人亚洲| 黄色AV免费| 久久久久久久国产视频| 三级三久久线久久99久目本WW| 污啪啪啪视频| 女生自91网站| 嗯~啊~轻一点 视频| 97精| 精品人妻中文字幕4399| 天天干天天狼在线视频| 久久久九97| 日日黄色三级网站| 97在线观看视频| 草草电影院| 亚洲超碰AV| 日韩av女优在线免费一区| 国产又大又粗又长视频在线| 亚洲91射| 青娱乐老司机视频| 天天看,天天做| 亚洲不卡不卡中文字幕不卡| 亚洲AV在线资源| 97av在线观看| 欧美日韩一区二区三区四区蜜桃| 五月天色综合| 亚洲视频二区 | 中文字幕一区 二 区 三 四 五 区日 日 骚| 97精品视频免费| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美成人A√在线一区二区| 久久婷婷综合国际产色怕| 久操B网| 欧美线天码中字| 香蕉黄色一级视频| 亚洲精品丝袜-不卡成人免费……| 欧美国产有色电影| 91无遮挡| 欧美做爰无码A片视频| 日han少妇无码| 火箭成精品视频884必出精品| 亚洲天堂AV在线播放| 女人天堂AV五区在线| 91痴汉| 国产亚洲日韩在线三区黑人| 天美传媒国产原创中文字幕亚洲欧美另类| 在线亚洲丝袜视频网站| 亚洲av噜噜噜噜噜噜| 九月丁香| 综合色久欲| 国产曰批免费观看久久久| 你操综合| 精品人妻一区二区三区不卡断 | 青青草色插素人| 人妻色偷色噜| 口爆综合网| 67914在线兔费成人视频| 99国产在线 精品 视频| 91暧暧| 亚洲欧美电影| 91美女中出| 久草综合网| 欧美一级A片在线看视频性色| 成人精品视频| 成人AV超碰免费在线| 欧美九九爱| 亚洲天堂男人的天堂| 另类视频在线| 日韩欧美女求操每天更新| 欧美强奸一区二区诱惑| 97国产伦理| 国产区性爱在线视频秋霞豆| 精品九九九九九九九九九| 国产一区二区三区免费视频在性观看| 99啪啪视频| 69国产对白刺激| 成人日韩中文字幕| 日韩有码 一区二区三区| 免费看污网站| 99亚洲精品| 97 视频在线| 亚洲精品尤物yw在线影院| 亚洲自拍欧美国产首页网曝 | 996热| 九九九999久久久网站| 国产超碰在线| 欧美精品97| 北京专精特新企业招聘信息| 综合伊人激情| 日逼五月天| 韩三级a视频在线观看| 国产丰满少妇久久久精品影院| 性爱视频免费网址| 亚洲美女 晚间男人天堂| 亚欧视频在线| 亚洲中字慕不卡| 嗯啊不要在线| AV麻豆免费一区| 亚洲日韩XXX| 91精品大奶人妻| 97在线视频免费观看| 天堂精品小草| hd成人一区二区在线| www.人人摸在线视频| 午夜激情床戏激情| 国产一区二区三区视频在线看| 久久熟女久| 天天爽夜夜操| 精品久久久久久AV无码| 精吧天堂| 中文字幕五区| 国产精品爱欲| 欧洲站一级二级三级h| 欧美 亚洲 制服 精品| av强奸乱轮| 国产精品久久久亚洲第一牛牛_在线观看| 情色AV电影| 95自拍视频在线观看| 精品国产乱码久久久久久免费| 超碰亚洲欧美日韩无| 人人操人人搞人人草| 热热色91| 韩日精品福利视频一区不卡在线免| 国产精品熟女乱伦| 国产精品黑人一区二区三区| 久久偷偷色综合蜜桃| 情色日播放AV| 人妻激情偷乱视三区频一区二区| 尤物av网站免费在线播放| 一区二区三区四区在线不卡| 香一区二区三区| 天天草天天干天天日| 88xx成人精品视频| 91精品国产91久久久久久久久久久久| 国产有码一区| 激情丁香婷婷| 涩涩这里只有精品视频| 国产精品视屏| 亚洲欧美天| 999综合色| 久久一二区四| 人妻熟女午夜精品在线| 人人操,操人人| 妇女性内射冈站HDWWWCOM| 蜜屁av| 天堂综合| 欧美超碰96| 蜜桃视频精品一区二区| 一区三区啪啪| 超97在线精品视频| 精品国模无码| 亚洲精品久久久久久久蜜桃臀| 日本不卡免费二区| 国产久久久久影院老熟女| 色综合潮| 九月丁香婷婷| 91 亚洲 欧洲| 亚洲国产一区二区三区四区国产| 欧美真人抽搐一进一出gif | 99性爱| 久久精品亚洲成a人天堂| 亚洲欧洲综合成人av一区| 亚洲综合影院| 亚洲熟女诱惑| 天美av在线| 久肏视频字幕| 久久女女| 久久久久久久久国产| 超碰这里只有精品| 午夜天堂精品久久| 男人天堂站| 国产欧美一区二区| 岛国小电影| 99热精品青草在线| 熟女在线视频| 热天堂一区二区| 爆乳免费黄网站| 欧美日韩国第一区| 亚洲免费精品一区| 国产久久一区二区三区野外在线| 中文字幕日产av人| 熟妇人妻一区二区三区| 日韩伦理视频| 伊人国产av| 四虎AV影视国产精品亚洲精品| 热久久九九热| 欧美夜夜骑视频| 九九九草| 香蕉国产97| 国产91美女视频| 亚洲精品人体| 国产无码成人无码| 操婢日韩| www.久久最新地址| 日韩精品亚洲专区在线影视| 日本在线播放不卡一区|