久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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)都是繞不開(kāi)的基礎(chǔ)操作。很多人提起旋轉(zhuǎn)第一反應(yīng)就是cv2.getRotationMatrix2D加cv2.warpAffine兩行代碼搞定真到面試被問(wèn)一句“旋轉(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è)視覺(jué)的工程師、以及想補(bǔ)一遍底層原理的開(kāi)發(fā)者閱讀。先說(shuō)一個(gè)我自己的經(jīng)驗(yàn)圖像旋轉(zhuǎn)看著簡(jiǎn)單但它的核心難點(diǎn)從來(lái)不是“轉(zhuǎn)一下”而是“繞哪個(gè)點(diǎn)轉(zhuǎn)”“轉(zhuǎn)完畫(huà)布多大”“空白區(qū)域填什么”“旋轉(zhuǎn)后坐標(biāo)怎么對(duì)應(yīng)回去”。這四個(gè)問(wèn)題搞定了旋轉(zhuǎn)這個(gè)專題你就真正拿下了后面再看仿射變換、透視變換都會(huì)輕松很多。這篇文章就按這個(gè)思路往下走。2. 旋轉(zhuǎn)的數(shù)學(xué)基礎(chǔ)從二維平面坐標(biāo)變換說(shuō)起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)的地基。我先說(shuō)說(shuō)它是怎么推出來(lái)的因?yàn)槔斫饬送茖?dǎo)過(guò)程你就不會(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)下來(lái)符號(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。到這里你可能覺(jué)得簡(jiǎn)單但千萬(wàn)別小看這個(gè)矩陣很多人寫代碼時(shí)出錯(cuò)就是因?yàn)樽鴺?biāo)系方向和旋轉(zhuǎn)方向的定義沒(méi)統(tǒng)一。2.2 先說(shuō)結(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 里看起來(lái)是順時(shí)針。坐標(biāo)系x 軸方向y 軸方向正角度旋轉(zhuǎn)方向數(shù)學(xué)坐標(biāo)系右上逆時(shí)針圖像坐標(biāo)系(OpenCV)右下順時(shí)針視覺(jué)上但 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ì)通過(guò)實(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)然后把像素值賦過(guò)去。寫成代碼如下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)圖像畫(huà)布需要擴(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)畫(huà)布范圍內(nèi) if 0 new_x new_w and 0 new_y new_h: dst[new_y, new_x] img[y, x] return dst這段代碼跑起來(lái)能轉(zhuǎn)但問(wèn)題一眼就能看出來(lái)。第一個(gè)問(wèn)題是目標(biāo)圖像上會(huì)出現(xiàn)大量空洞。因?yàn)樵瓐D的整數(shù)像素點(diǎn)經(jīng)過(guò)旋轉(zhuǎn)后映射到目標(biāo)畫(huà)布上也是整數(shù)坐標(biāo)但旋轉(zhuǎn)后的坐標(biāo)分布不是均勻的有些目標(biāo)位置可能沒(méi)有任何源像素對(duì)應(yīng)結(jié)果就是結(jié)果圖上有黑色的斑點(diǎn)和條紋視覺(jué)效果很差。第二個(gè)問(wèn)題是邊界切邊。繞原點(diǎn)旋轉(zhuǎn)時(shí)圖像左上角那個(gè)點(diǎn) (0, 0) 永遠(yuǎn)留在原點(diǎn)不動(dòng)但圖像的其它角點(diǎn)會(huì)轉(zhuǎn)出原畫(huà)布范圍導(dǎo)致輸出圖像內(nèi)容嚴(yán)重丟失。3.2 反向映射才是正經(jīng)做法正向映射從源圖找目標(biāo)會(huì)產(chǎn)生空洞那反過(guò)來(lái)呢從目標(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è)致命問(wèn)題繞原點(diǎn)旋轉(zhuǎn)時(shí)圖像內(nèi)容會(huì)大量移出畫(huà)布結(jié)果圖雖然變大了但有效內(nèi)容殘缺。3.3 一個(gè)可視化實(shí)驗(yàn)看看繞原點(diǎn)旋轉(zhuǎn)到底丟了什么我拿一張 200×150 的測(cè)試圖上面畫(huà)了一個(gè)矩形、一個(gè)圓形和一個(gè)三角形標(biāo)志物分別做 45 度旋轉(zhuǎn)輸出了正向映射和反向映射兩張結(jié)果。正向映射的結(jié)果圖里矩形區(qū)域出現(xiàn)大量黑色空洞邊緣呈鋸齒狀原因是多個(gè)源像素競(jìng)爭(zhēng)同一個(gè)目標(biāo)位置或完全無(wú)像素落位。反向映射的結(jié)果圖沒(méi)有空洞但四個(gè)角的內(nèi)容全部丟失圖像主體嚴(yán)重偏移因?yàn)樾D(zhuǎn)中心是左上角頂點(diǎn) (0, 0)圖像中所有像素都圍繞這個(gè)頂點(diǎn)轉(zhuǎn)動(dòng)視覺(jué)上就是整張圖被“甩”到了右下方。這個(gè)實(shí)驗(yàn)的價(jià)值在于它直觀告訴你繞原點(diǎn)旋轉(zhuǎn)在圖像處理中幾乎沒(méi)有實(shí)用價(jià)值。圖像處理的習(xí)慣是繞圖像中心旋轉(zhuǎn)視覺(jué)上才符合“這張圖在原位置轉(zhuǎn)了個(gè)角度”的直覺(jué)。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)的畫(huà)布坐標(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)系朝向無(wú)關(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)”一眼就能看出來(lái)。驗(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)后新畫(huà)布尺寸 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)整矩陣平移分量使圖像在新畫(huà)布中居中 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)要說(shuō)明cv2.getRotationMatrix2D返回的矩陣默認(rèn)情況下是保持原圖像尺寸不變也就是說(shuō)旋轉(zhuǎn)后超出原畫(huà)布的部分會(huì)被裁掉。如果我們希望圖像完整地旋轉(zhuǎn)并放到一個(gè)更大的畫(huà)布上就必須手動(dòng)調(diào)整矩陣的平移分量。這就是代碼中M[0, 2] (new_w - w) / 2.0這一行的作用。5. 邊界處理旋轉(zhuǎn)后圖像被“切角”的系統(tǒng)解決方案5.1 三個(gè)典型場(chǎng)景保持尺寸、擴(kuò)展畫(huà)布、收縮畫(huà)布在真實(shí)項(xiàng)目里旋轉(zhuǎn)后的邊界處理經(jīng)常決定一個(gè)功能是否可用。不同的需求對(duì)應(yīng)不同的策略場(chǎng)景需求描述畫(huà)布尺寸策略典型應(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)接矩形縮小畫(huà)布到內(nèi)接矩形圖片旋轉(zhuǎn)后想盡量保留主體、避免黑邊先說(shuō)場(chǎng)景一。直接用cv2.warpAffine(img, M, (w, h))就是在保持原尺寸的前提下旋轉(zhuǎn)。這種情況下旋轉(zhuǎn)中心如果仍設(shè)為圖像中心那么圖像四角一定會(huì)被裁剪出現(xiàn)黑色三角區(qū)域。很多初學(xué)者第一次做旋轉(zhuǎn)就會(huì)遇到這個(gè)問(wèn)題不知道怎么辦。場(chǎng)景二則需要計(jì)算圖像四個(gè)角點(diǎn)旋轉(zhuǎn)后的坐標(biāo)然后求出新畫(huà)布的包圍盒。這一步的數(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ì)算畫(huà)布尺寸還要每個(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ù)的說(shuō)明左上角點(diǎn)旋轉(zhuǎn)后跑到了原畫(huà)布左上角之外。畫(huà)布尺寸計(jì)算得到的new_w和new_h就是為了把這些負(fù)坐標(biāo)包含進(jìn)來(lái)。最終在新畫(huà)布中這個(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)最后再加上畫(huà)布的平移補(bǔ)償。5.3 實(shí)現(xiàn)中的黑邊填充選擇無(wú)論哪種邊界策略旋轉(zhuǎn)后的圖像不可避免會(huì)出現(xiàn)無(wú)像素對(duì)應(yīng)的區(qū)域填充策略決定了最終的視覺(jué)效果。填充方式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è)或特征提取千萬(wàn)別用黑色填充因?yàn)楹谏吙驎?huì)產(chǎn)生虛假的邊緣響應(yīng)如果只是給人看的預(yù)覽圖白色或灰色更自然。6. 插值算法對(duì)旋轉(zhuǎn)質(zhì)量的影響為什么雙線性是默認(rèn)選擇6.1 插值是怎么來(lái)的反向映射得到的源坐標(biāo) (x_src, y_src) 往往不是整數(shù)比如 (100.3, 200.6)這時(shí)候就必須通過(guò)周圍像素的某種加權(quán)組合來(lái)估算該位置的像素值。這就是插值。三種最常用的插值算法對(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è)過(guò)程你就知道為什么旋轉(zhuǎn)大角度時(shí)雙線性會(huì)比最近鄰平滑得多。6.2 一個(gè)直觀的對(duì)比實(shí)驗(yàn)我用一張帶斜線紋理的測(cè)試圖分別用最近鄰、雙線性和雙三次插值旋轉(zhuǎn) 15 度。從輸出結(jié)果看最近鄰的斜線邊緣呈明顯臺(tái)階狀視覺(jué)上像是低分辨率放大雙線性邊緣干凈平滑但仔細(xì)看有些微模糊雙三次邊緣更銳利高頻紋理保留得更好。在 OpenCV 里OpenCV 提供的插值參數(shù)包括cv2.INTER_NEAREST、cv2.INTER_LINEAR、cv2.INTER_CUBIC和cv2.INTER_LANCZOS4。實(shí)測(cè)下來(lái)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)回來(lái)之后平均像素誤差絕對(duì)差在 0 到 2 之間說(shuō)明我的矩陣推導(dǎo)和坐標(biāo)處理都沒(méi)有問(wèn)題。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 度后寬高互換完全符合幾何直覺(jué)。這個(gè)驗(yàn)證方法不僅驗(yàn)證了矩陣本身還驗(yàn)證了畫(huà)布尺寸計(jì)算是否正確。7.3 在代碼里實(shí)現(xiàn)自動(dòng)化的驗(yàn)證函數(shù)如果你經(jīng)常寫幾何變換相關(guān)的代碼強(qiáng)烈建議把驗(yàn)證函數(shù)固化下來(lái)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)過(guò)去再轉(zhuǎn)回來(lái)”的平均誤差。如果誤差大于 5基本可以斷言旋轉(zhuǎn)矩陣或者平移補(bǔ)償寫錯(cuò)了。這個(gè)方法我在做圖像配準(zhǔn)項(xiàng)目時(shí)幫了大忙有一次就是靠它發(fā)現(xiàn)單獨(dú)處理了中心坐標(biāo)但沒(méi)有補(bǔ)償新畫(huà)布平移量導(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ì)問(wèn)繞中心旋轉(zhuǎn)的公式里已經(jīng)有中心平移到原點(diǎn)的步驟了為什么不能直接利用現(xiàn)成的cv2.warpAffine分兩次做從數(shù)學(xué)上完全可以先平移、旋轉(zhuǎn)、再平移。但在像素坐標(biāo)操作時(shí)每次變換都會(huì)引入一次插值兩次變換就是兩次插值圖像質(zhì)量會(huì)多損失一截。而且中間生成的圖像畫(huà)布尺寸如果處理不當(dāng)最終結(jié)果會(huì)出現(xiàn)內(nèi)容殘缺或坐標(biāo)偏移。所以實(shí)際工程中優(yōu)先用getRotationMatrix2D一次性生成復(fù)合矩陣一步到位視覺(jué)和精度都好得多。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)畫(huà)效果旋轉(zhuǎn)中心是表盤軸心而不是整個(gè)圖像的幾何中心。這時(shí)只需要把 center 參數(shù)換成軸心坐標(biāo)其他邏輯完全一致。注意旋轉(zhuǎn)后如果畫(huà)布擴(kuò)大了中心補(bǔ)償?shù)钠揭朴?jì)算依然要照著新畫(huà)布尺寸來(lái)。第三個(gè)是坐標(biāo)的反向映射在圖像配準(zhǔn)中的意義。做過(guò)圖像配準(zhǔn)或全景拼接的人都知道配準(zhǔn)的實(shí)質(zhì)就是求兩幅圖之間的變換矩陣。旋轉(zhuǎn)矩陣作為最基礎(chǔ)的變換矩陣能幫你理解其他復(fù)雜變換——比如求單應(yīng)性矩陣時(shí)其實(shí)就是在找一組參數(shù)滿足多個(gè)點(diǎn)對(duì)的變換關(guān)系。這個(gè)理解上的跨越往往就是從把圖像旋轉(zhuǎn)吃透開(kāi)始的??偟恼f(shuō)來(lái)常規(guī)旋轉(zhuǎn)最大的價(jià)值在于幫你建立一套圖像幾何變換的心智模型坐標(biāo)系、矩陣、映射方向、插值、邊界這些概念在任何幾何變換里都會(huì)遇到。把這套模型打牢了后續(xù)學(xué)透視變換、極坐標(biāo)變換、畸變校正都會(huì)順很多。這也是我為什么建議你有時(shí)間一定要自己寫一遍旋轉(zhuǎn)代碼而不是永遠(yuǎn)停留在cv2.warpAffine一行調(diào)用上。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美色图亚洲激情| 国产精品一二三免费网站| 人人操人人精品影片| 91N欧美| 1769国内精品视频| 欧美后入式| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲人妻中文高清| 欧美色女人| 亚洲欧美激情小说| 色综合久久夜色精品国产天堂| 最近的最新的中文字幕视频| 波多野结衣被操50分钟免费视频| 亚洲精品九九九| 人妻素股| 国产小炒后入式| 蜜臀国产AV中文字幕| 日韩av一级黄片| 一起草三级AV电影在线观看 | 蜜臀视频网站| 97操碰| 中文字幕诱惑制服人妻丝袜美丝袜美| 亚洲欧美九九九| 碰碰在线视频| 欧美日不卡| 日本中文字幕在线视频| 97香蕉碰碰人妻国产欧美| 国产操操日韩三级黄| 精品免费视频国产一区| 看全色黄大色大片免费视频| 国产偷拍网站| 人人操人人干网页| 天天肏夜夜肏| 99久久com免费视频′| 九九aV| 中文字幕永久在线| 女优免费一区二区永久| 成人欧美一区二区三区黑人一| 91精品丝袜久久久久久| 国产suv精品一区二区四区999| 乱人伦 国语对白:视频直接看| 久久色情| 中文字幕大片三级狠狠干| 日本狠狠干| 95精品在线| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 深田咏美亚洲精品福利社 | 99精品无码| 久久这里只精品| 综合网少妇| 亚洲成成熟女人综合一区二区| 992视频一区| 97在线免费看视频| 亚洲精品白浆高清久久久久久| 毛片久久| 思思热国产在线视频| 欧美一区二区三区另类精品| 91亚洲黑人| 一区| 9精品久久久久| 久久精品超碰| 99精品视频在线观看免费| 日韩不卡在线一区二区| 黄污污污污| 国产高清不卡视频| 99热销国产这里有精品| 成人无码电影在线观看网| 亚洲av综合色区无码一| 加勒比大香蕉视频在线| 亚洲自拍青操视频| 秋霞色色影院| 国产原创剧情在线丝袜| 欧美 亚洲 制服 精品| 国产夫妻一区二区| 青青草好吊| 97这里只有精品| 十八禁成人网站在线观看| 国产激情视频在线观看| 神马久久69| 日韩欧美女求操每天更新| 国产白丝精品在线观看| 亚洲成人一区二区精品| 青青色综合| 超碰天天去日穴| 久久AV无码AV| 午夜精品视频777| 国产精品肉丝自拍| chaopen97久久| 国产精品视频内谢女人| 国产精品老师| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美福利视频啊啊啊啊| JULIA一区二区三区在线播放| 国产suv精品一区二区四| AV丝袜东京热| 大香蕉乱级| 亚洲男人bt天堂| 亚洲清纯唯美| 凹凸视频在线观看伊人| 日韩精品大香蕉伊人在线| 老熟女91| 国产精品一区人妻精品阁在线| 男人的天堂日韩| 亚洲中文字幕精品一区| 亚洲国产一级中文综合久久天堂在线免费观看 | 97色欧洲| 女人高潮大叫一级毛片| 97伦综合| 五月婷婷激情网| 亚洲操操操无码| 国内亚洲精彩视频在线| 婷婷15月天青娱乐| 视频黄色国产一级| www. 男人天堂成人在线| 国产精品久久久无码aV去| 老女人日韩美91| 综合久久9| 中文字幕永久在线| 亚洲成成熟女人综合一区二区| 全球成人中文在线| 欧美BT 亚洲色图| 综合一区中亚洲国产成人综合精品| 狠色婷婷久久一区二区三区_| 欧美成年人性爱视频免费观看| 免费精品99| 日韩综合色网| 999狠狠综合| 中欧人妻丝袜中文字幕| 嗯嗯嗯嗯啊啊啊好紧好大| 亚州欧美色图| 五月天久久婷婷亚洲| 黄片国产精品一区二区| 美女丝袜激情小说| 欧美日韩岛国大片在线观看| 国产乱码久久久| 9久热| 亚洲AV色图| 91爱综合| 亚洲日韩美女中文字幕乱| 亚洲综合另类色图| 男人的天堂不卡一区二区| 欧美激情综合| 久久一本大香蕉 | 69精品少妇一区二区三区蜜桃| 78操B| 操美女人妻| 国产日韩欧美中文在线播放| 青青草日韩免费观看高清在线| 亚洲国产一区二区三区四区国产| 久久在线观看免费视频| 天天综合网~91入口| 亚洲第一在线视频| 欧美一区二区三区互相| 91AV天美在线视频| 亚洲色欲一区二区三区| 黑人精品成人一区二区三区| 蜜臀久久99精品久久久| 色综合20p| 自偷自拍的亚洲视频| 亚洲精品97| 内射卯月麻衣| 九九久久一区二区三区| 亚洲成?V人片在线观看福利| 国产精品分类在线观看| 国产9熟妇视频网站| 日韩在线视频1234| 综合色播| 欧美专区日本专区| 妇女性内射冈站HDWWWCOM| 99精品高潮| 日韩AV片| 在线另类| 日韩欧美成人综合在线| 26UUU欧美日本| 亚洲欧美91√| 久插综合| 中文字幕大片三级狠狠干| 国产精品久久久久亚洲av | 内射白嫩美女| 久久婷婷色| blacked精品一区国产| 欧美性91| 欧美日韩不卡传媒| 日日骚中文字幕| 三上制服丝AV| 九九黄色网| 在现视频女上位好爽| 搡老女人老熟女91老熟女综合网| 性感美女啊啊啊在线| 97色97好| 久久AV无码1区2区3区| 混色激情av| www.99视频| 黄色AAAAA欧美| 丁香婷婷五月| 欧美亚洲今日在线| 欧美情色亚洲| 怡红院久久老司机| 999国产精品999久久久久久| 精品人妻15区| 久久三区四区| 亚洲第一视频 欧美风情 日韩| 日韩精品三级片长长久久| 美女久久久久久久| 久久久久久久久久久久黄色 | 亚洲国产麻豆一区二区三区| 日本国产欧美高清在线| 丁香九月激情啪| 天天做日日爱夜夜爽| 日本人人操人人操| 亚洲AV无码成人精品久久| 亚洲二区精品在线观看| 国产无套粉嫩白浆在| 日韩久久.一级黄色片| 国产高清精品一区二区三区毛片 | 五月综合久久| 顶级少妇BT天堂| 成年男人的天堂| 爱爱动态120秒| 大香蕉伊人一区在线观看| 搡老女人老妇女老妇老熟女怎么读| 亚洲五月丁香花狠狠干一区二区三区 | 情趣丝袜无码操逼视频| 蜜臀AV秘一区翔田千里| 日本在线激情一区二区三区 | 国产AV人人夜夜澡人人爽麻豆| 国产精品在线一区二区| 中文字幕乱亚洲美女精品一区| 美女久久久久久久久久久| 天天综合中文字幕 91| 韩国一级做a久久久久| 2024年最新色情网站在线观看 | 诱惑人妻欧美一区在线播放| 夜夜嗨一区二区三区三州加勒比 | 五月婷婷基地| 日韩精品人妻中文字幕久久久| 蜜臀久久99'精品久久久| 伊人欧美大香蕉视频| 日韩三级伊人| 黄色小视频日本txt| 丁香六月激情综合| 久久久久9999妇女| 国产夫妻性生活视频| 78超碰| 偷拍亚洲熟女视频播放| 野狼激情网| 91性高| 超碰美国| 99婷婷| 日韩中文字幕av在线播放| 91精品91久久久久77777| 亚洲天天综合| 在线可观看的黄色网址| 久久久99久9| 亚州欧美总和| 亚川综合视频| 天综合网| 另类欧美色| 日本免费人成视频播放120秒| 成人在线视频网| 成人熟女区| 啪啪视频免费在线观看| 在线99热| 欧美性天天影院| 日本中文字幕不卡视频| 91蜜桃婷婷狠狠久久综合9色| 精品二999| 免费中文综合精品| 午夜激情床戏激情| 日韩无码人妻中字久久三区四区| Av手机版天堂网| caorenqi shipin| 超碰伊人在线| 亚洲av影院在线观看| 久久大香蕉手机高清| 深夜激情| av一区二区三区 中文| 99re只有精品| 口爆吞精在线观看| A啊啊在线观看| 日本不卡一区| 99re9在线| 久热伊人| 激情五月天网站| 国产乱码久久久| 国产18精品亚洲精品| 国产成自自拍在线观看| AV一起草在线| 久插综合| 亚洲欧美国产成人综合不卡| 外国免费性情大片| 暖暖精品二区三区观看| 久久久久9999| 日韩国产十八禁| 综合亚洲欧美精品日韩?v| 少妇一线天久久久久久| 白丝AV| 亭亭丁香激情| 国产高清无码一区三区二区| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 二三四区精品| 久久久九九网站| 人妻少妇无码| 欧洲免费一区二| 台湾一区国产高清在线| 亚洲区限制级| 国产一区二区在线电影| 蜜桃臀av一区二区| 久热69九色熟妇97| 四虎午夜影院| 是还免费视频1727我| 人妻一区视频| 国产美女自拍视频| 久九干| 成人97人人超碰人人| 神马久久久久久久久久| 国产在线精品偷| 亚洲高潮影院| 久操高青| 午夜精品五区| 男人天堂网站| 射丝袜大香蕉| 蜜桃臀av在线观看| 黄色片一区二区三区四区五区| 一区二区三区色综合| 日韩性爱高清免费视频| 超碰成人人人爽人人爽| 97爱碰| 色婷婷亚洲婷婷| 高清有码一区二区| 91老熟女91老女人| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 欧美96精品在线| 东京热av男人的天堂| 人妻系列无码专区中文有码| 东京热毛片177b2viP| 嗯~啊~快点 死我视频| 日韩黄片视频试看| 这里都是精品| 日韩天天本| 麻豆久久久一区二区| 国产乱色国产精品免费视| 999热日韩精品| 蜜臀精品1区2区| 欧洲一级性爱视频在线观看| 色欲Av人妻精品一区二| chaopen97久久| 国产成自自拍在线观看| 婷婷激情五月综合| 亚洲AV无码国产精品久久久久| 老熟妇乱轮| 国产一区二区精品在线视频| 嫩草 人人网精品| 91久久久久久久久久久| 日亚韩精品视频二区三| 天天操人人操狠狠插| 国产精品熟女一区二区三区| 伊人久大| 97精品在线| 精品久久久久黄少妇| 97婷婷色| 手机看片1024你懂的国产| 久久这里只精品免费福利| 成人无码欧美一级A片狼牙直播| 国产熟妇一区二区| 亚洲精品丝袜| 97精品国产97久久久| 免费久久精品麻豆一区二区av| 日韩操逼HD| 久久国产AⅤ| 夜夜躁狠狠躁日日躁av| 超碰午夜| 青青草国产欧美非洲黑人| 97超碰影音| 粉嫩av一区二区三区四季| 国产精品视频播放| 久久综合女优| 在线视频一区二区传媒| 中文字幕在线观看网页| 97玖玖人妻| 亚洲最大91网| 精品乱子一区二区三区99| 日本天天吊| 亚洲天堂男人在线| 久久国色天香香蕉| 人妻出轨一区二区三区| 国模不卡一本二本三电影| 日韩中文字幕熟妇人妻| 久久一留热品黄| 99re69综合| 熟妇艹鸡八| 91九九九逼| 色狠人在线99| 久久精品视| 中文字幕精品专区搜索结果91| 欧美天堂第二区| 欧美日韩97在线| 久久久精品九| 亚洲有码视频二区| www.91人妻.com| 淫荡熟女乱伦网| 成人性爱美曰韩| 亚洲欧美成人在线| 97天天搞在线| 嫩草影院永久在线制服丝袜| 超碰天天去日穴| 日逼97| 欧美性爱精品七区| 天天干人人干天天日97| 丰满人妻-区二区三区免费| 无码99| 国产天天看| AV男人天堂网| 亚洲欧美日韩激情不卡| 翔田千里AⅤHD无码| 无码国产精品久久久久| 啊啊啊用力在线观看| 久久久久亚洲精品| www欧美91| 青娱乐国产剧情av一区| 亚洲一区二区精品福利| AV天堂丝袜| 免费97视频| 中文字幕熟女人妻丝袜| 日本三级一区二区 在线| 91九九| 欧美综合制服在线| 96一区二区| 国产理论视频在线播放| 吻戏激情性巴克| 欧美色自拍| 日韩欧美日韩| 国产精选三级在线观看| 热久久九九热| 五月丁香激情四射| 五月天婷精品激情| 亚洲蜜臀懂色| 农村女一级毛卡片| 熟女精品一区二区三区| 日韩一级二级三级免费看完整版国语版 | 国产精品爆乳懂色蜜乳| A V少妇特黄三级| 国产一区二区精品在线视频| 无码久久亚洲高清,| 女人被添高潮免费视频| 久热久| 亚洲成人黄色在线观看| 爱爱动态120秒| 久久青娱乐| 国产A v无码专区| 国产农村妇女精品一二区| 78m啪啪啪| 中国亚洲呦女专区| 久久人妻少妇| 午夜福利免费福利视频| 久久久久久中文版| 无遮挡又黄又刺激的视频| 婷婷亚洲综合| 亚洲黄色电影| 黄片在线免费在线观看| 九草九九九| 国产女乱淫真高清免费视频| 欧美一区二区成人一卡| 操逼大黄片| 亚洲综合99999| 国产中文字幕在线点播| 精品网站9999| 永久免费av无码网站国产app | 十八禁视频一区二区| 久久久久密| 丰满熟女一区二区三区在线播放| 大香交伊人网| 久久久性| 91超碰碰在线| 天天视频黄网站| 亚洲污污网站| 免费啪啪啪网站18岁| 97天天插| 狠狠综合| 欧美传媒| 天天干1区2区在线| 激情六月天| 91另类| 色好看av| www.91理论| 一摸二插三插| 另类小说五月天| 无码人妻精品酒店| 青青草伊人久久| 99精品欧美一区二区三区桃色| 成人精品欧洲亚洲| 五月丁香久久| 日本黄色精品专区网站| 嗯嗯啊啊啊啊轻点视频| 五月婷视频| 国产福利一区二| av东京热男人的天堂| 国产美女高潮叫床视频| 国产97免费视频| 亚洲淫乱骚妇AV| 一级久久久久久久久久久| 欧美亚洲系列| www.高清无码诱惑一区.com| 人人扣人人操| 韩国一级婬片A片无码天美| 青青草导航在线视频| 亚洲一区深夜| 国产精品嫩草影院免费| 久久三区四区| 色眯眯av| 蜜色网色哟哟| 美女被艹尤物视频| .精品人妻一区二区三| 天美传媒精品一区二区三区| 国产女上位好爽在线| 99在线无码精品秘 入口黑人| 亚洲一区二区中文字幕| 后入式在线免费观看60秒| 激情综合婷婷| 黄色片,com| 日韩熟女精一区二区三区不卡| 亚洲 欧美 另类 综合 偷拍| 色色五月天激情| 国产又黄又粗的视频| 欧洲亚洲人妻无码高清久久三区四区| 久久爽爽精品| 日韩女优在线| 香蕉综合网| 精品一啪| 欧美日日操| 日本影视久久免费| 色欧美亚洲| 福利五区| 97超碰这里只有精品| 中文字幕丝袜美腿| 99热超碰| 国产欧美日韩在线不卡第一页| 日韩高清黄片| 桃花色综合影院| 无码人妻一区二区三区免费九色| 骚鸭AV| 蜜臀th| 国产乱人妻精品入口| 国产日本熟女顶级一区二区三区视频| 五月天激情小说| 精品性爱一区二区| 国产精品亚洲美女久久久久| 亚洲av无线观看| 美女尤物人人操| 国产中文字幕在线点播| 国产辣妈在线视频福利| 91啦人妻| 26uuu国产亚洲综合| 久久精品国产Aⅴ| WWW.操逼.COM| 乱抡国产91| 很很操在线| 超碰欧美| 国产成人99久久亚洲综合| 无码久久国产| 91搞逼视频| 黑人白女精品一区| 91精品女厕偷拍视频| 国产操逼视频在线观看| 啪啪啪东京| 强奸国产在线| 日亚韩精品视频二区三| 91色久| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 77777亚洲蜜臀精品久久综合蜜臀| 婷婷五月丁香五月| 手机不卡视频不卡在线一二三区| 欧美亚洲影视| 96久久久精品| 四季av一区二区凹凸精品小说| 99热在线只有精品| 校园春色五月天| 成人午夜高潮av猛片| 成 人片 黄色大片| 亚洲一区中文字幕一区| 麻豆精品久久久久久久| 亚洲精品天天影视综合网| 60秒免费小视频| 欧美最婬乱婬爆婬牲视频| 啊啊啊啊免费视频| 国产精品日本无码A片| 综合在线导航一区| 五月天丁香| 操b网站亚洲无码| 国产后入清纯| 午夜舔阴达高潮视频免费看| 男人a天堂手机在线版| 日韩成人综合网| 久久国产精品,久久国产| 日韩色女精品| 丰满人妻区一区二区三| 人人妻人射| 92福利社视频| 亚洲性感丝袜诱惑在线观看| 9丨久久九九九| 日本性爰一道本| 日日夜夜干| 一级黄碟| av网站在线看| 久久伊人大香蕉| 91成人国产综合久久精品蜜月| 亚洲丨在线| 大香蕉视频一二三区| 五月天开心网| 夜夜免费视频| 国产亚洲深夜激情| 五月婷婷综合网| 色综合久久夜色精品国产天堂| 久久人妻| 91亚洲影视| 色性综合| 欧美91精品国产自产| 欧美婷婷久久| 熟女精品日韩一区二区三区 | 91狠狠综合久久久久久| 97超碰巨乳| 欧美性爱第1 页| 成人精品在线| 91天天美女| 在线免费观看日韩一区| 久久久久久久 九九九九九九九| 97超碰影音| 淫荡熟女乱伦网| 久插综合| PMv在线观看| 欧美色棕合| 96久久久久久久| 免费的黄片wwwwww| 99热18这里只有精品| 国产亚洲精品无码三区| 亚洲免费日韩在线一区二区| 97综合网| 伊人综合色网| 久久人妻| 麻豆国产原创AV色哟哟| 国产精品视频在线观看| av天堂影视中文在字幕在线中文| 一本色道久久综合狠狠操| 国产97视频免费观看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 手机av天堂久久久久| 亚洲丝袜少妇在线| 亚洲色婷婷| 天堂性色| 欧美制服另类丝袜| 亚洲男人天堂网| 久草精品热视| 欧美大波激情xxxx| 国产午夜视频| 丝袜剧情| 亚洲性综合11| 99热综合| 日韩性爱长视频免费| 精品人妻一区二区三区-国产精品| 欧美91精品国产自产| 久久这里都是精品| 人人干黄色| 中文字幕AV片| 美女黄频a美女大全免费皮| 久9综合在线| 99热在线播放| 97超碰人人操人人操| 加勒比AV网| 国产小黄片在线免费观看 | 婷婷导航| 国产乱伦视频污| 蜜桃久久久久久久久久久久| 被体育老师抱着c到高潮| 欧美日韩一二三| 日韩无码嘿咻黑热久| 久久久国产av美女私房| 香蕉免费一区二区三区不读| 中文字幕jul-617人妻熟女| 欧美啪啪色吧在线| 久久夜夜夜夜| 日韩中文字幕二区| 国产高清自拍视频| 97在线资源| 五月花婷婷| 综合国产影视三级| 日曰骚久久精品| 亚洲人在线| 亚洲性爱无码乱伦av| 97精品网| 亚洲极品| 台湾佬中文娱乐自偷自拍| 高清成年美女黄网站免费大全 | 六月丁香婷| 久久久久久久九九九九九九| 日韩91网| 国产精品密臀网在线观看| 久久五月综合| 中国一级特黄大片护士| 亚洲中文字幕熟女少妇一区二区| 亚洲限制级| 这里有精品| 人妻81p| 97色网| 五月天精品| 中文字幕AV片| 中文字幕在线观看第二页| 极品白嫩美女白浆成人福利在线看| 亚洲无线观看久久| 精品少妇99| julia中文字幕在线观看| 丝袜熟女2P| 亚洲高清在线| 成人乱码一区二区三少妇| 国产精品点击进入在线影院高清 | 国产农村妇女一区二区| 在线啊v一区| 中文字幕亚洲热播人妻| 色综合V| 深夜福利黄片| 国产精品操| 夜夜夜爽www精品视频| 91国内外在线| 99re在线精品78| 大香网伊人久久综合网eew| 国产黄a三级三级三级av在线看 | 国产97在线 | 亚洲| 欧美综色欧| 99热线麻豆 | 日韩精品一区二区日韩| 看免费的黄片| 黄片免费视频2019| 人人干黄色| 国产精品ⅴ无码大片在线看.| 亚洲无992tv| 91超碰在线| 大香蕉一级黄色片久久| 乱欲视频| 亚洲A曰本VA欧美VA视频| 国产强奸乱伦无码视频| 97操| AVE乱伦| 日韩熟女操逼| 国产家庭乱伦性爱视频| 欧美日韩不卡a片| 国产宅男宅女在线观看| 欧美性爱1080p| 国产精品成人蜜臀AV在线| 色欲蜜臀AV| 日韩成人大片在线观看| www色婷婷| 色老汉玖玖爱| 欲色影视综合吧| 很很很很操| 国产97在线播放| 欧美性爱一区二区三区| 欧美97爱| 翔田千里Av在线| 四虎影视永久在线免费| 在线观看精品国产免费| 可以免费观看的AV| 97国产色综合| 亚洲欧洲久久天堂| 综合色久欲| 91少妇人妻| 影音先锋每日最新资源在线观看 | 国产伦精品一区二区三区视频女| 青青草原人妻| 久啪| 亚洲骚逼少妇| 国产丝袜美女在线一区| 最新日产中文在线麻豆| 色婷婷激情| 欲色影视综合吧| 综合色久欲| 女人天堂av在线播放| 欧美探花网| 综合色色婷婷| 麻豆影音天美视频| 狠狠97| av毛片aaaaa免费看| 国产熟女乱论| 高清不卡视频| 亚洲 无码 有码 中文字幕| 国产精品国产精品国产| 中文字幕久热视频在线| 五月丁香色婷婷| 亚洲97p| 亚洲视频精选| 色婷婷视频| 丰满翘臀美女影院视频| 天天干1区2区在线| 明星性猛交ⅹxxx乱大交| 无码国产精品久久久久| 大香蕉天天看妹子| 中文字幕福利视频一区二区三区在线观看| 国产中出内射一区二区| 黄色高清无码无码破解免费暗网| 特级大荫道BBwBBwBBW| www.成人无码| 可以在线观看的黄色网址| 亚洲,欧美,春色,另类| 精品无码产区一区二| PMv在线观看| 能看的av| 亚洲区小说| 亚洲成人免费中文字幕| 夜夜操91744565| 97操b| 国产女性无套 免费观看| 91夜色chaopeng| 亚洲欧美情色| 五月激情小说| 后入合集| 中文字幕精品资源在线| 操逼999| 小说区 图片区色 综合区| 五月丁香六月| 老熟女综合网| 婷婷色中文字幕| 蜜臀va69| 一区在线国产播放| 少好三P| 亚乱色| 超碰97在线中文| 欧美 日韩 亚洲 春色| 久久一区,青青青青草视频在线播放| 久久久久久加勒比| 亚洲激情四射| 中文字幕黄色一起草| 国产福利第一视频| com 首页 18岁 禁区 女优 免费 精选 同城 | 天天爽天天操啊啊啊| 免费一级视频特黄色大片| 久草老司机| 亚洲精品中文字幕一区在线视频 | 国内毛片免费h片在线| 美女上床网站| 久久久网站| 天天干人人乐| 女人爽到高潮久久久| 亚州一区二区| 欧亚乱色熟一区二区三四区| 2024黄色视频| 国产性感在线观看| 99久久亚洲精品无码毛片潘甜甜 | 黄片www视频免费| 精品.99999| 波多野结衣AV无码一区| 亚洲青色欧美| 嫖老熟女A片一二三区| 久久精品国产97欧美精品亚洲 | 美女啊啊啊啊啊| 综合网,亚洲,欧美| 亚洲国产成人精品999| 91欧美美女日韩国产婷婷| 操迟操逼在巾线Fre看| 亚洲人人夜夜澡人人爽| 91超级碰碰| 五月丁香激情四射| 欧美在线大香蕉| 大伊香蕉在线视频免费| 日本三级精品| 午夜福利久久久噜久噜久久综合| 91人精品妻入口| Aa东京男人的天堂| 99色热| 日韩AV无码网站| 亚洲精品黑丝| 激情文学网伊人| 日韩黄色av中文字幕| 国产蜜臀在线| 欧洲综合视频| 中文字幕一区电影在线观看| 1024精品在线| 97露脸精品丝袜| 十八禁啪啦拍视频无遮挡| 精品91日日夜夜超清资源| 欧美日本天堂| 色婷婷丁香五月天| 樱花蜜乳av| 午夜在线播放| 久久草视频污视频| 夂久色| 国产福利在线视频网站| 亚洲国产97| 天美一区在线| 久久久久久久久久久人妻| 极品尤物女神在线观看| 蜜臀久久99精品久久久久久无删减| 久久爽爽精品| 大香蕉亚洲中文| 亚洲97久久精品亚洲| 热99这里有精品综合久久| 色天堂在线观看| 亚洲熟女国产综合另类| 国产精品亚洲一区二区三区四区| 国产精品不卡高清在线观看| 超碰在线综合97| 97露脸精品丝袜| 日本 欧美 亚中文字幕| 日本高清有码网址视频| 久久久精品中文字幕爱豆| 日韩九九九| 欧美丝袜美女电影一二三四区| 日本熟妇熟色97一本在线观看| 日日碰狠狠添天天爽超| 无遮挡一级毛片视频免费的| 92一区二区| aV中文麻| 土豪酒店各种姿势玩弄极品幼稚| 97久久超碰国产网站| 日韩精品一二三四| 国产一区二区啪啪视频| 日韩国产乱子伦App| 日韩一区二区精彩视频| av影片在线观看不卡| 欧美日韩小说| 玖色av| 999九九九九国产动| 欧美伦乱爱| 欧美性暴力猛交XXXX | 91综合网站| 撸无码不卡免费视频| 久久是精品| 狠狠干妹子| 亚洲日韩久久精品一区| 亚洲第91页 | 色图综合网| …亚洲黄色厕厕女女在线播…| 蜜臀网址在线| 天天影视综合色| 青青草原成人| 亚洲AV色图一区| 天操天操夜操夜月操月年年操操| 天天操天天日天天干| 亚洲日韩久久精品一区| 日韩精品人妻中文字有码在线| 99热在线不卡| 大香蕉伊人在线成人AV在线观看| 欧美日日夜夜| 闷骚老熟女15P| 久久中文色图| 亚州 综合 色图| 日本东京热大香蕉a片| 国精综合一二三区影视| 熟妇人妻一区二区三在线| 久久夜夜夜| 久九9精品| 亚洲丝袜二区在线| 欧美性色网| 国产高清成人免费视频| 久久这里只精品免费福利| 成人97人人超碰人人| 很黄很色的视频在线观看| 人妻一区视频| 丰满的三级少妇欧美久久久| 婷婷伊人| 厕所偷拍在线| 精品一区二区三区四区外站| 超碰一区二区| 国产精品一区二区三区在线| 97精品网| 操操吧亚洲乱伦视频| 国产精品探花在线| 久久久一级| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 爆操无码| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 自拍大香蕉乱插| 91丝袜美女国产| 97久久超碰国产网站| 69丨亚洲丨精品丨入口免费播放| 国产精品伦理| 国产福利一区二| 日本www操操操| 98一区二区精品| 东京热av男人的天堂| 人妻少妇精品无码专区二区密桃| 少妇久久久久| 国产av又色又爽又黄| 日日干夜夜干| 97操在线| 九九九九国产| 国产三级中文有码在线视频| 亚洲天堂男人在线| 天天摸夜夜操视频| 夜夜躁狠狠躁日日躁av| 精品国产一区二区三区四区在线看| 十八禁啪啦拍视频无遮挡| 射丝袜高跟鞋99| 国产丝袜一区二区三区| 被操高清无码视频| 人妻熟女av国产网站| 一区二区三区四区五区高清无码永久视频| 综合激情一一91| 五月丁香黄色网| 99自拍视频在线| www.男人天堂| 亚洲阿v天堂在线| 日韩性爱网址| 欧洲精品人妻| 放黄片放3级黄片没穿衣服| 粉嫩在线一区二区懂色| 97色色国产视频| 91亚洲网| 26uuu国产| 加勒比av网| 欧美黄色片在线播放| 欧美综合97www| 极品少妇久久久| 日本一本道A级黄色毛片试看60分钟| 色一射色一射| 亚洲在饯| 91chinese在线| 韩国毛片一区二区三区| 日本熟女免费視颖| 中文乱码99| 亚洲天堂欧美| 天天干天天干天天干| 午夜福利 成人 91| 26uuu国产成人综合| 诱惑人妻欧美一区在线播放| 日韩三级伊人| 天堂九九九九九九九九九| 人妻精品一区二区三区| 色爱国产| 亚洲春色欧美| 国产久久久久久久久一区二区| 欧美国产操逼| 日韩 欧美 视频 在线 一区| 精品九九九九九九九| 无码不卡八戒| 超碰性爱97| 精品免费视频国产一区| 欧美精品在线观看| 91丨人妻丨国产丨丝袜| 色欧美天天| 97免费在线观看| 欧洲天天在线| 国产一级舔足在线观看| 色婷婷aV一区二区三区麻豆综合| 97资源久久| 青青草原狼av| 超碰日韩人妻| 一区,二区,三区视频| 日韩性爱毛片操骚逼| 国产欧美成人精品| 国产精品一二三在线看| 97欧美久久久久久久| 国产 丝袜 欧美中文 另类| 精品视频一区二区| 五月婷丁香| 97在线观看免费视频| 大香蕉伊人网WWWn0n| a片久久久久久久久久久久 | 久久综合日韩亚洲欧美| 天天日天天干天天色| 久久婷婷亚洲欧| 综合久久六月久久婷婷| 校园春色美腿丝袜| 天天日天天插| 久久亚洲中文字幕视频| silk lablo在线观看一区二区| 国产久久av| 婷婷激情丁香| 一区,二区,三区网站| 国产精品久久久久亚洲av| 黑白配性爱AV成| 天天操天天射青青草| 97在线精品观看视频| 久久99久久99精品天美传媒棢·纸:. | 免费农村成人少妇人妻Aa一区二区视频| 亚洲在线网站| 97天天在线| 国产精品老熟女一区二区| 1级黄色夫妻对换性交免费看| 国产丝袜高跟美女av免费观看| 婷婷五月成人| 欧美一区二区三区四区综合| 天天天操天天天爱| 日韩女优在线| 91爆操视频| 91超碰在线| 操老熟女AV| 91亚洲不卡一区| 亚洲一区二区中文字幕| 97爱| 亚洲脚交| 区一二区日韩亚洲乱码av电影| 亚洲砖码砖专无区2023| 五月丁香激情四射| 人妻无码一区二区三区久久99| 后入美女国产| 国产操操日韩三级黄| 日本操逼视频导航| 亚州欧美色图| 久艹99| 91亚洲黑人| 国产亚洲禁久一区二区| 一级性爱视频免费在线| 国产精品乱码久久久、久久| caopeng97| www.色操逼| 欧 美 自 拍 偷 拍| 射综合网| 青青久久久| 麻豆国产成人精品| 欧美专区在线| 99久久婷婷国产综合| 免费自拍三级综合| 久久亚洲AV无码白度| 日本不卡中文| 蜜臀aV午夜一区二区三区| 欧美内射少妇| 国产熟女少妇一区| 国产吞精a级片激情电影| 一级性爱啪啪视频| 亚洲无992tv| 日本男人天堂| www.人人摸在线视频| 好爽免费视频,| 中文字幕78| 97爱亚洲综合色| 日本丝袜美腿人妻九九| www.狠狠干.coom | 97在线青| 麻豆影音天美视频| 亚洲情色婷婷五月天| 9九九九九视频在线观看| www色婷婷| 成人性爱电影网| 国产三级电影免费观看| 久久精品国产亚洲AV片多多| 亚洲国产ⅴ高清在线观看| 成人免费毛片| 免费看片黄| 人妻无一区二区三区| 国产二区三区免费视频| 97免费在线视频| 天天插网| 国产无码成人无码| 欧美精品宗合| 秋霞色色影院| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 黄色香蕉视频网站一区| 色哟哟AⅤ| 7777奇米影视久久| 香蕉热人人精品| 日韩美女操b| 免费A V在线播放| 国产一区二区三区导航| 天天躁日日躁XXXXYY| 欧美在线播放aaaa| 色色五月天激情| 爽爽淫人网| 中文字幕在线观看AV| 东北女人的毛片| 亚洲综合射| 97人人色| 少妇精品久久|