欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識(shí)庫 > 運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性

運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性

熱門標(biāo)簽:外呼并發(fā)線路 ai電銷機(jī)器人源碼 百度地圖標(biāo)注沒有了 長沙高頻外呼系統(tǒng)原理是什么 地圖標(biāo)注審核表 湛江智能外呼系統(tǒng)廠家 ai電話機(jī)器人哪里好 宿遷星美防封電銷卡 西藏房產(chǎn)智能外呼系統(tǒng)要多少錢

技術(shù)背景

連通性檢測是圖論中常常遇到的一個(gè)問題,我們可以用五子棋的思路來理解這個(gè)問題五子棋中,橫、豎、斜相鄰的兩個(gè)棋子,被認(rèn)為是相連接的,而一樣的道理,在一個(gè)二維的圖中,只要在橫、豎、斜三個(gè)方向中的一個(gè)存在相鄰的情況,就可以認(rèn)為圖上相連通的。比如以下案例中的python數(shù)組,3號(hào)元素和5號(hào)元素就是相連接的,5號(hào)元素和6號(hào)元素也是相連接的,因此這三個(gè)元素實(shí)際上是屬于同一個(gè)區(qū)域的:

array([[0, 3, 0],
       [0, 5, 0],
       [6, 0, 0]])

而再如下面這個(gè)例子,其中的1、2、3三個(gè)元素是相連的,4、5、6三個(gè)元素也是相連的,但是這兩個(gè)區(qū)域不存在連接性,因此這個(gè)網(wǎng)格被分成了兩個(gè)區(qū)域:

array([[1, 0, 4],
       [2, 0, 5],
       [3, 0, 6]])

那么如何高效的檢測一張圖片或者一個(gè)矩陣中的所有連通區(qū)域并打上標(biāo)簽,就是我們所關(guān)注的一個(gè)問題。

Two-Pass算法

一個(gè)典型的連通性檢測的方案是Two-Pass算法,該算法可以用如下的一張動(dòng)態(tài)圖來演示:

該算法的核心在于用兩次的遍歷,為所有的節(jié)點(diǎn)打上分區(qū)的標(biāo)簽,如果是不同的分區(qū),就會(huì)打上不同的標(biāo)簽。其基本的算法步驟可以用如下語言進(jìn)行概述:

  1. 遍歷網(wǎng)格節(jié)點(diǎn),如果網(wǎng)格的上、左、左上三個(gè)格點(diǎn)不存在元素,則為當(dāng)前網(wǎng)格打上新的標(biāo)簽,同時(shí)標(biāo)簽編號(hào)加一;
  2. 當(dāng)上、左、左上的網(wǎng)格中存在一個(gè)元素時(shí),將該元素值賦值給當(dāng)前的網(wǎng)格作為標(biāo)簽;
  3. 當(dāng)上、左、左上的網(wǎng)格中有多個(gè)元素時(shí),取最低值作為當(dāng)前網(wǎng)格的標(biāo)簽;
  4. 在標(biāo)簽賦值時(shí),留意標(biāo)簽上邊和左邊已經(jīng)被遍歷過的4個(gè)元素,將4個(gè)元素中的最低值與這四個(gè)元素分別添加到Union的數(shù)據(jù)結(jié)構(gòu)中(參考鏈接1);
  5. 再次遍歷網(wǎng)格節(jié)點(diǎn),根據(jù)Union數(shù)據(jù)結(jié)構(gòu)中的值刷新網(wǎng)格中的標(biāo)簽值,最終得到劃分好區(qū)域和標(biāo)簽的元素矩陣。

測試數(shù)據(jù)的生成

這里我們以Python3為例,可以用Numpy來產(chǎn)生一系列隨機(jī)的0-1矩陣,這里我們產(chǎn)生一個(gè)20*20大小的矩陣:

# two_pass.py

import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":
    np.random.seed(1)
    graph = np.random.choice([0,1],size=(20,20))
    print (graph)

    plt.figure()
    plt.imshow(graph)
    plt.savefig('random_bin_graph.png')

執(zhí)行的輸出結(jié)果如下:

$ python3 two_pass.py 
[[1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0]
 [0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0]
 [1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0]
 [0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0]
 [1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1]
 [1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0]
 [0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1]
 [1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0]
 [1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0]
 [0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 0]
 [0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0]
 [1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1]
 [1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1]
 [1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1]
 [0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1]
 [0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0]
 [0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1]
 [0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0]
 [1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0]
 [0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1]]

同時(shí)會(huì)生成一張網(wǎng)格的圖片:


其實(shí)從這個(gè)圖片中我們可以看出,圖片的上面部分幾乎都是連接在一起的,只有最下面存在幾個(gè)獨(dú)立的區(qū)域。

Two-Pass算法的實(shí)現(xiàn)

這里需要說明的是,因?yàn)槲覀儾]有使用Union的數(shù)據(jù)結(jié)構(gòu),而是只使用了Python的字典數(shù)據(jù)結(jié)構(gòu),因此代碼寫起來會(huì)比較冗余而且不是那么美觀,但是這里我們主要的目的是先用代解決這一實(shí)際問題,因此代碼亂就亂一點(diǎn)吧。

# two_pass.py

import numpy as np
import matplotlib.pyplot as plt
from copy import deepcopy

def first_pass(g) -> list:
    graph = deepcopy(g)
    height = len(graph)
    width = len(graph[0])
    label = 1
    index_dict = {}
    for h in range(height):
        for w in range(width):
            if graph[h][w] == 0:
                continue
            if h == 0 and w == 0:
                graph[h][w] = label
                label += 1
                continue
            if h == 0 and graph[h][w-1] > 0:
                graph[h][w] = graph[h][w-1]
                continue
            if w == 0 and graph[h-1][w] > 0:
                if graph[h-1][w] = graph[h-1][min(w+1, width-1)]:
                    graph[h][w] = graph[h-1][w]
                    index_dict[graph[h-1][min(w+1, width-1)]] = graph[h-1][w]
                elif graph[h-1][min(w+1, width-1)] > 0:
                    graph[h][w] = graph[h-1][min(w+1, width-1)]
                    index_dict[graph[h-1][w]] = graph[h-1][min(w+1, width-1)]
                continue
            if h == 0 or w == 0:
                graph[h][w] = label
                label += 1
                continue
            neighbors = [graph[h-1][w], graph[h][w-1], graph[h-1][w-1], graph[h-1][min(w+1, width-1)]]
            neighbors = list(filter(lambda x:x>0, neighbors))
            if len(neighbors) > 0:
                graph[h][w] = min(neighbors)
                for n in neighbors:
                    if n in index_dict:
                        index_dict[n] = min(index_dict[n], min(neighbors))
                    else:
                        index_dict[n] = min(neighbors)
                continue
            graph[h][w] = label
            label += 1
    return graph, index_dict

def remap(idx_dict) -> dict:
    index_dict = deepcopy(idx_dict)
    for id in idx_dict:
        idv = idx_dict[id]
        while idv in idx_dict:
            if idv == idx_dict[idv]:
                break
            idv = idx_dict[idv]
        index_dict[id] = idv
    return index_dict

def second_pass(g, index_dict) -> list:
    graph = deepcopy(g)
    height = len(graph)
    width = len(graph[0])
    for h in range(height):
        for w in range(width):
            if graph[h][w] == 0:
                continue
            if graph[h][w] in index_dict:
                graph[h][w] = index_dict[graph[h][w]]
    return graph

def flatten(g) -> list:
    graph = deepcopy(g)
    fgraph = sorted(set(list(graph.flatten())))
    flatten_dict = {}
    for i in range(len(fgraph)):
        flatten_dict[fgraph[i]] = i
    graph = second_pass(graph, flatten_dict)
    return graph

if __name__ == "__main__":
    np.random.seed(1)
    graph = np.random.choice([0,1],size=(20,20))
    graph_1, idx_dict = first_pass(graph)
    idx_dict = remap(idx_dict)
    graph_2 = second_pass(graph_1, idx_dict)
    graph_3 = flatten(graph_2)
    print (graph_3)

    plt.subplot(131)
    plt.imshow(graph)
    plt.subplot(132)
    plt.imshow(graph_3)
    plt.subplot(133)
    plt.imshow(graph_3>0)
    plt.savefig('random_bin_graph.png')

完整代碼的輸出如下所示:

$ python3 two_pass.py 
[[1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0]
 [0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0]
 [1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0]
 [0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0]
 [1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1]
 [1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0]
 [0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1]
 [1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0]
 [1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0]
 [0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 0]
 [0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0]
 [1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1]
 [1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1]
 [1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1]
 [0 1 0 2 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1]
 [0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0]
 [0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1]
 [0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0]
 [3 0 3 0 4 0 0 0 0 0 0 5 0 0 0 1 0 1 1 0]
 [0 3 3 0 4 0 6 0 7 7 0 0 5 0 0 0 0 0 1 1]]

同樣的我們可以看看此時(shí)得到的新的圖像:


這里我們并列的畫了三張圖,第一張圖是原圖,第二張圖是劃分好區(qū)域和標(biāo)簽的圖,第三張是對第二張圖進(jìn)行二元化的結(jié)果,以確保在運(yùn)算過程中沒有丟失原本的信息。經(jīng)過確認(rèn)這個(gè)標(biāo)簽的結(jié)果劃分是正確的,但是因?yàn)樯婕暗揭恍┧惴▽?shí)現(xiàn)的細(xì)節(jié),這里我們還是需要展開來介紹一下。

算法的執(zhí)行流程

if __name__ == "__main__":
    np.random.seed(1)
    graph = np.random.choice([0,1],size=(20,20))
    graph_1, idx_dict = first_pass(graph)
    idx_dict = remap(idx_dict)
    graph_2 = second_pass(graph_1, idx_dict)
    graph_3 = flatten(graph_2)

這個(gè)部分是算法的核心框架,在本文中的算法實(shí)現(xiàn)流程為:先用first_pass遍歷一遍網(wǎng)格節(jié)點(diǎn),按照上一個(gè)章節(jié)中介紹的Two-Pass算法打上標(biāo)簽,并獲得一個(gè)映射關(guān)系;然后用remap將上面得到的映射關(guān)系做一個(gè)重映射,確保每一個(gè)級(jí)別的映射都對應(yīng)到了最根部(可以聯(lián)系參考鏈接1的內(nèi)容進(jìn)行理解,雖然這里沒有使用Union的數(shù)據(jù)結(jié)構(gòu),但是本質(zhì)上還是一個(gè)樹形的結(jié)構(gòu),需要做一個(gè)重映射);然后用second_pass執(zhí)行Two-Pass算法的第二次遍歷,得到一組打上了新的獨(dú)立標(biāo)簽的網(wǎng)格節(jié)點(diǎn);最后需要用flatten將標(biāo)簽進(jìn)行壓平,因?yàn)榍懊嬗成涞年P(guān)系,有可能導(dǎo)致標(biāo)簽不連續(xù),所以我們這里又做了一次映射,確保標(biāo)簽是連續(xù)變化的,實(shí)際應(yīng)用中可以不使用這一步。

標(biāo)簽的重映射

關(guān)于節(jié)點(diǎn)的遍歷,大家可以直接看算法代碼,這里需要額外講解的是標(biāo)簽的重映射模塊的代碼:

def remap(idx_dict) -> dict:
    index_dict = deepcopy(idx_dict)
    for id in idx_dict:
        idv = idx_dict[id]
        while idv in idx_dict:
            if idv == idx_dict[idv]:
                break
            idv = idx_dict[idv]
        index_dict[id] = idv
    return index_dict

這里的算法是先對得到的標(biāo)簽進(jìn)行遍歷,在字典中獲取當(dāng)前標(biāo)索引所對應(yīng)的值,作為新的索引,直到鍵跟值一致為止,相當(dāng)于在一個(gè)樹形的數(shù)據(jù)結(jié)構(gòu)中重復(fù)尋找父節(jié)點(diǎn)直到找到根節(jié)點(diǎn)。

其他的測試用例

這里我們可以再額外測試一些案例,比如增加幾個(gè)0元素使得網(wǎng)格節(jié)點(diǎn)更加稀疏:

graph = np.random.choice([0,0,0,1],size=(20,20))

得到的結(jié)果圖片如下所示:


還可以再稀疏一些:

graph = np.random.choice([0,0,0,0,0,1],size=(20,20))

得到的結(jié)果如下圖所示:


越是稀疏的圖,得到的分組結(jié)果就越分散。

總結(jié)概要

在本文中我們主要介紹了利用Two-Pass的算法來檢測區(qū)域連通性,并給出了Python3的代碼實(shí)現(xiàn),當(dāng)然在實(shí)現(xiàn)的過程中因?yàn)闆]有使用到Union這樣的數(shù)據(jù)結(jié)構(gòu),僅僅用了字典來存儲(chǔ)標(biāo)簽之間的關(guān)系,因此效率和代碼可讀性都會(huì)低一些,單純作為用例的演示和小規(guī)模區(qū)域劃分的計(jì)算是足夠用了。在該代碼實(shí)現(xiàn)方案中,還有一點(diǎn)與原始算法不一致的是,本實(shí)現(xiàn)方案中打新的標(biāo)簽是讀取上、上左和左三個(gè)方向的格點(diǎn),但是存儲(chǔ)標(biāo)簽的映射關(guān)系時(shí),是讀取了上、上左、上右和左這四個(gè)方向的格點(diǎn)。

參考鏈接

  1. https://blog.csdn.net/lichengyu/article/details/13986521
  2. https://www.cnblogs.com/riddick/p/8280883.html

到此這篇關(guān)于運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性的文章就介紹到這了,更多相關(guān)Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域流通內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python3基礎(chǔ)語法知識(shí)點(diǎn)總結(jié)

標(biāo)簽:林芝 盤錦 海南 南平 普洱 大同 寧夏 漯河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性》,本文關(guān)鍵詞  運(yùn)用,Python3,實(shí)現(xiàn),Two-Pass,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性》相關(guān)的同類信息!
  • 本頁收集關(guān)于運(yùn)用Python3實(shí)現(xiàn)Two-Pass算法檢測區(qū)域連通性的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美一区二区三区系列电影| 日韩欧美国产一二三区| 久久久精品日韩欧美| 日韩精彩视频在线观看| 亚洲熟女一区二区三区| 欧美性猛片xxxx免费看久爱| 中文字幕亚洲在| www.av精品| 色呦呦国产精品| 亚洲免费观看高清完整版在线 | 久久精品国产99国产精品| www.男人天堂| 91精品在线一区二区| 午夜影院在线观看欧美| 亚洲熟女一区二区| 日韩欧美综合一区| 免费成人结看片| 欧美人妻一区二区三区| 国产喂奶挤奶一区二区三区 | 91精品国产一区二区| 视频一区中文字幕国产| 一级特级黄色片| 精品电影一区二区三区| 国产专区综合网| 国产一二三区精品| 亚洲欧美日韩中文字幕一区二区三区| 99国产精品一区| 在线成人小视频| 美女视频黄 久久| 91禁男男在线观看| 中文字幕中文乱码欧美一区二区| 99精品视频在线免费观看| 欧美色国产精品| 日本不卡一区二区三区高清视频| 美女脱光内衣内裤| 亚洲国产精品99久久久久久久久| 成人av网在线| 欧美久久久久免费| 久久成人免费电影| 性欧美疯狂猛交69hd| 亚洲精品日韩综合观看成人91| 久久免费精品国产| 久久午夜电影网| 成人激情免费网站| 3d成人h动漫网站入口| 激情综合一区二区三区| 全网免费在线播放视频入口 | 一区二区三区四区蜜桃| 成人性生活免费看| 国产日韩欧美精品电影三级在线 | 成人av网站在线| 9191成人精品久久| 国产麻豆精品视频| 欧美三级电影在线看| 久久se精品一区二区| 色婷婷国产精品| 日本怡春院一区二区| 欧美特黄一级片| 丝袜亚洲另类欧美综合| 特黄一区二区三区| 亚洲国产aⅴ天堂久久| 亚洲国产日韩一区无码精品久久久| 亚洲欧洲色图综合| 爱爱免费小视频| 亚洲美腿欧美偷拍| 免费一级做a爰片久久毛片潮| 成人欧美一区二区三区黑人麻豆 | 亚洲免费视频中文字幕| 97超碰在线免费观看| 亚洲四区在线观看| 色哟哟精品观看| 免费黄色a级片| 日本一区二区在线不卡| 欧美做受高潮中文字幕| 国产精品免费久久| 亚洲永久精品ww.7491进入| 亚洲色图一区二区| 国产视频不卡在线| 性做久久久久久久久| 久久久久久视频| 麻豆精品视频在线| 欧美性生活影院| 国产盗摄一区二区三区| 日韩一区二区免费高清| 91色九色蝌蚪| 中文在线免费一区三区高中清不卡| 国产精品手机在线观看| 最新国产精品久久精品| 亚洲av毛片基地| 日韩精品视频网站| 91久久精品国产91性色tv| 国产一区二区三区电影在线观看| 在线不卡欧美精品一区二区三区| 成人91在线观看| 国产欧美日韩在线| 无码人妻精品一区二区中文| 亚洲成人免费观看| 欧美亚洲动漫精品| 成人免费va视频| 国产欧美日韩视频一区二区| 精品少妇一区二区三区免费观| 亚洲成人自拍一区| 91成人在线精品| av在线综合网| 国产精品日日摸夜夜摸av| 亚洲午夜精品久久久久久高潮| 五月天亚洲婷婷| 欧美日韩精品一区二区| 99九九99九九九视频精品| 国产精品免费视频一区| 国产精品一区二区亚洲| 激情综合网激情| 精品国产免费一区二区三区香蕉 | 亚洲欧洲制服丝袜| 成人免费视频网站入口::| 国产精品一区二区男女羞羞无遮挡| 欧美xxxxx裸体时装秀| 亚洲色图14p| 日日骚欧美日韩| 欧美一级片在线| 亚洲av成人片色在线观看高潮| 亚洲国产综合91精品麻豆| 欧美午夜电影网| 成年人看片网站| 亚洲一区二区三区爽爽爽爽爽 | 亚洲久久久久久| 午夜伦理一区二区| 这里是久久伊人| 国产成人无码一区二区在线观看 | 亚洲成人自拍偷拍| 欧美日韩国产美女| 2一3sex性hd| 日本午夜精品视频在线观看| 3d动漫精品啪啪| 男女做爰猛烈刺激| 国产自产高清不卡| 国产精品不卡一区| 欧美中文一区二区三区| 91porn在线| 日韩av成人高清| 精品久久久久香蕉网| 一级在线观看视频| 风间由美性色一区二区三区| 亚洲色图制服丝袜| 欧美日韩一区成人| avtt香蕉久久| 极品少妇xxxx偷拍精品少妇| 国产精品私房写真福利视频| 色婷婷国产精品久久包臀 | 51久久夜色精品国产麻豆| 日本japanese极品少妇| 久草精品在线观看| 亚洲国产高清在线| 日本韩国一区二区| 国产精品麻豆入口| 加勒比av一区二区| 亚洲欧洲精品一区二区精品久久久| 日本韩国欧美三级| 亚洲天堂资源在线| 国产精品系列在线观看| 亚洲免费在线视频| 日韩精品在线网站| 国产探花在线视频| wwwxxxx在线观看| 另类小说一区二区三区| 国产精品三级电影| 欧美日本在线视频| 中文字幕伦理片| 97久久人人超碰| 日本大胆欧美人术艺术动态| 中文字幕成人在线观看| 欧美日韩精品一区二区| 在线观看免费黄色网址| 91丨九色丨国产丨porny| 日本欧美肥老太交大片| 亚洲国产成人在线| 欧美精品丝袜中出| 国产又粗又猛又爽又黄的视频小说| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 最近日本中文字幕| 国产成人精品亚洲日本在线桃色| 亚洲男同1069视频| 精品国产一区二区亚洲人成毛片| 久久精品黄色片| 日韩在线免费观看av| 成人av资源站| 精品一区精品二区高清| 亚洲精品国产无套在线观| 精品国产免费人成电影在线观看四季| 国产97免费视频| 欧美日韩高清丝袜| 91麻豆6部合集magnet| 激情久久久久久久久久久久久久久久 | 久久99精品久久久| 一区二区三区欧美亚洲| 性活交片大全免费看| 国产一区三区三区| 亚洲自拍偷拍图区| 国产欧美日本一区视频| 欧美精品黑人性xxxx|