本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤其涉及一種圖像修復(fù)方法、應(yīng)用和計(jì)算設(shè)備。
背景技術(shù):
圖像修復(fù),即對受到損壞的圖像進(jìn)行修復(fù)重建或者去除圖像中的多余物體。由于修復(fù)區(qū)信息的缺失,圖像修復(fù)是一種根據(jù)修復(fù)區(qū)周圍的圖像信息或其他先驗(yàn)知識對修復(fù)區(qū)進(jìn)行復(fù)原與重建的難題。對于復(fù)雜背景的圖像修復(fù),既需要考慮顏色、紋理之間的過渡,還需要保持邊緣的連續(xù)性。
現(xiàn)有圖像修復(fù)方法的處理效果往往都不夠好。例如,基于偏微分方程的圖像修復(fù)方法計(jì)算量大且計(jì)算不穩(wěn)定;整體變分方法適于處理較大的區(qū)域,但是極易導(dǎo)致邊界模糊;紋理合成方法計(jì)算量大、修復(fù)時(shí)間長,不實(shí)用;等等。
技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明提供一種圖像修復(fù)方法、應(yīng)用和計(jì)算設(shè)備,以力圖解決或至少緩解上面存在的問題。
根據(jù)本發(fā)明的一個(gè)方面,提供一種圖像修復(fù)方法,在計(jì)算設(shè)備中執(zhí)行,該方法包括:獲取用戶對圖像的涂抹軌跡,將被所述涂抹軌跡覆蓋的圖像區(qū)域作為涂抹區(qū);根據(jù)所述涂抹區(qū)對所述圖像進(jìn)行裁剪,得到第一圖像;以所述第一圖像為底層圖像建立圖像金字塔;按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合,將底層圖像的填充融合結(jié)果作為最終的圖像修復(fù)結(jié)果。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,第一圖像為正方形。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,第一圖像的面積為所述涂抹區(qū)的面積的16倍。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,圖像金字塔中相鄰兩層圖像的分辨率壓縮比例為0.7。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,圖像金字塔的頂層圖像的尺寸不小于25*25。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合的步驟包括:
設(shè)置每層圖像的最大迭代次數(shù);從圖像金字塔的頂層圖像開始,依次執(zhí)行以下步驟:步驟一:設(shè)置迭代次數(shù)m=1,根據(jù)所述涂抹區(qū)確定涂抹擴(kuò)展區(qū)、屏蔽區(qū)和可選區(qū),其中,所述涂抹擴(kuò)展區(qū)為對所述涂抹區(qū)進(jìn)行擴(kuò)展所得的區(qū)域,所述屏蔽區(qū)為由當(dāng)前層圖像的右起第一數(shù)量的列和下起第二數(shù)量的行所組成的區(qū)域,所述可選區(qū)為當(dāng)前層圖像中除了所述涂抹擴(kuò)展區(qū)和所述屏蔽區(qū)之外的區(qū)域;步驟二:為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)隨機(jī)設(shè)置一個(gè)填充點(diǎn),其中,所述填充點(diǎn)位于所述可選區(qū)中;將待填充點(diǎn)與填充點(diǎn)的對應(yīng)關(guān)系記錄于填充表Fm中;步驟三:采用傳播算法對填充表Fm進(jìn)行更新;步驟四:采用上一次迭代過程中的填充表Fm-1對填充表Fm進(jìn)行更新;步驟五:根據(jù)填充表Fm對所述涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;步驟六:判斷是否Fm=Fm-1或m=當(dāng)前層圖像的最大迭代次數(shù):若是,則判斷本層圖像是否為底層圖像,若是,則結(jié)束,若否,則繼續(xù)進(jìn)行下一層圖像的填充融合;若否,則m增加1,執(zhí)行步驟二。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,每層圖像的最大迭代次數(shù)Mi=2*i-1,其中,i為圖像在圖像金字塔中的層數(shù),圖像金字塔的底層的層數(shù)為1,頂層的層數(shù)為n,1≤i≤n。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,涂抹擴(kuò)展區(qū)為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的圖像區(qū)域。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,第一數(shù)量和第二數(shù)量均為6。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x-1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1+1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1+1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x+1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1-1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1-1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y-1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1+1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1+1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y+1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1-1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1-1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟四進(jìn)一步包括:按照以下步驟更新填充表Fm中各待填充點(diǎn)的填充點(diǎn):待填充點(diǎn)(x,y)在填充表Fm-1、Fm中的填充點(diǎn)分別為(u1,v1)、(u2,v2);分別以(x,y)、(u1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將填充表Fm中待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,相似距離為兩個(gè)區(qū)塊中對應(yīng)位置像素的RGB歐氏距離之和。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟五進(jìn)一步包括:以每一個(gè)填充點(diǎn)為左上角的頂點(diǎn)構(gòu)造相同尺寸的填充區(qū)塊;對于每一個(gè)待填充點(diǎn),將該待填充點(diǎn)對應(yīng)的填充點(diǎn)的填充區(qū)塊疊加至該待填充點(diǎn)處,其中,該待填充點(diǎn)的位置與其對應(yīng)的填充點(diǎn)的位置重合;計(jì)算每一個(gè)待填充點(diǎn)的RGB修復(fù)值,待填充點(diǎn)的RGB修復(fù)值為該待填充點(diǎn)處所疊加的各像素的RGB值的平均值。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,相同尺寸為7*7。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,執(zhí)行步驟一。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;重復(fù)上述放大填充表和塊疊加融合的步驟,直至完成底層圖像的塊疊加融合。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)方法中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表放大至底層圖像,根據(jù)放大的填充表對底層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。
根據(jù)本發(fā)明的一個(gè)方面,提供一種圖像修復(fù)應(yīng)用,駐留于計(jì)算設(shè)備中,該應(yīng)用包括:交互模塊,適于獲取用戶對圖像的涂抹軌跡,將被所述涂抹軌跡覆蓋的圖像區(qū)域作為涂抹區(qū);裁剪模塊,適于根據(jù)所述涂抹區(qū)對所述圖像進(jìn)行裁剪,得到第一圖像;金字塔構(gòu)造模塊,適于以所述第一圖像為底層圖像建立圖像金字塔;填充融合模塊,適于按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合,將底層圖像的填充融合結(jié)果作為最終的圖像修復(fù)結(jié)果。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,裁剪模塊適于將第一圖像設(shè)置為正方形。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,裁剪模塊適于將所述第一圖像的面積設(shè)置為所述涂抹區(qū)的面積的16倍。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,金字塔構(gòu)造模塊適于將圖像金字塔中相鄰兩層圖像的分辨率壓縮比例設(shè)置為0.7。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,金字塔構(gòu)造模塊適于控制圖像金字塔的頂層圖像的尺寸不小于25*25。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于按照以下步驟按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合:設(shè)置每層圖像的最大迭代次數(shù);從圖像金字塔的頂層圖像開始,依次執(zhí)行以下步驟:步驟一:設(shè)置迭代次數(shù)m=1,根據(jù)所述涂抹區(qū)確定涂抹擴(kuò)展區(qū)、屏蔽區(qū)和可選區(qū),其中,所述涂抹擴(kuò)展區(qū)為對所述涂抹區(qū)進(jìn)行擴(kuò)展所得的區(qū)域,所述屏蔽區(qū)為由當(dāng)前層圖像的右起第一數(shù)量的列和下起第二數(shù)量的行所組成的區(qū)域,所述可選區(qū)為當(dāng)前層圖像中除了所述涂抹擴(kuò)展區(qū)和所述屏蔽區(qū)之外的區(qū)域;步驟二:為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)隨機(jī)設(shè)置一個(gè)填充點(diǎn),其中,所述填充點(diǎn)位于所述可選區(qū)中;將待填充點(diǎn)與填充點(diǎn)的對應(yīng)關(guān)系記錄于填充表Fm中;步驟三:采用傳播算法對填充表Fm進(jìn)行更新;步驟四:采用上一次迭代過程中的填充表Fm-1對填充表Fm進(jìn)行更新;步驟五:根據(jù)填充表Fm對所述涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;步驟六:判斷是否Fm=Fm-1或m=當(dāng)前層圖像的最大迭代次數(shù):若是,則判斷本層圖像是否為底層圖像,若是,則結(jié)束,若否,則繼續(xù)進(jìn)行下一層圖像的填充融合;若否,則m增加1,執(zhí)行步驟二。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于設(shè)置每層圖像的最大迭代次數(shù)為Mi=2*i-1,其中,i為圖像在圖像金字塔中的層數(shù),圖像金字塔的底層的層數(shù)為1,頂層的層數(shù)為n,1≤i≤n。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于將涂抹擴(kuò)展區(qū)設(shè)置為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的圖像區(qū)域。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊還適于將所述第一數(shù)量和所述第二數(shù)量均設(shè)置為6。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x-1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1+1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1+1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x+1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1-1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1-1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y-1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1+1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1+1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y+1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1-1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1-1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟四:按照以下步驟更新填充表Fm中各待填充點(diǎn)的填充點(diǎn):待填充點(diǎn)(x,y)在填充表Fm-1、Fm中的填充點(diǎn)分別為(u1,v1)、(u2,v2);分別以(x,y)、(u1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將填充表Fm中待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1)。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于將所述相似距離設(shè)置為兩個(gè)區(qū)塊中對應(yīng)位置像素的RGB歐氏距離之和。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟五:以每一個(gè)填充點(diǎn)為左上角的頂點(diǎn)構(gòu)造相同尺寸的填充區(qū)塊;對于每一個(gè)待填充點(diǎn),將該待填充點(diǎn)對應(yīng)的填充點(diǎn)的填充區(qū)塊疊加至該待填充點(diǎn)處,其中,該待填充點(diǎn)的位置與其對應(yīng)的填充點(diǎn)的位置重合;計(jì)算每一個(gè)待填充點(diǎn)的RGB修復(fù)值,待填充點(diǎn)的RGB修復(fù)值為該待填充點(diǎn)處所疊加的各像素的RGB值的平均值。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于將所述相同尺寸設(shè)置為7*7。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,執(zhí)行步驟一。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;重復(fù)上述放大填充表和塊疊加融合的步驟,直至完成底層圖像的塊疊加融合。
可選地,在根據(jù)本發(fā)明的圖像修復(fù)應(yīng)用中,填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表放大至底層圖像,根據(jù)放大的填充表對底層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。
根據(jù)本發(fā)明的一個(gè)方面,提供一種計(jì)算設(shè)備,包括如上所述的圖像修復(fù)應(yīng)用。
根據(jù)本發(fā)明的技術(shù)方案,采用圖像金字塔的填充融合技術(shù),從金字塔的頂層圖像開始,為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)從可選區(qū)中搜索最匹配的填充區(qū)塊,并將這些填充區(qū)塊填充至相應(yīng)的待填充點(diǎn)處,完成填充區(qū)塊的疊加融合。在本層的塊疊加融合結(jié)果收斂或迭代次數(shù)達(dá)到最大后,將本層的融合結(jié)果放大至下一層,重復(fù)上述過程,進(jìn)行下一層圖像的填充融合,直至達(dá)到金字塔的最底層。
在圖像金字塔中,頂部層圖像更夠獲取到合適的邊界輪廓信息,底部層圖像能夠完善細(xì)節(jié)紋理信息,因此本發(fā)明的圖像修復(fù)方案能同時(shí)保持良好的紋理過渡和邊緣銜接,效果穩(wěn)定,適用于各種背景下的圖像修復(fù)。此外,本發(fā)明按照圖像金字塔從頂層到底層的順序依次對每層圖像進(jìn)行填充融合,上層圖像收斂后下層圖像能更快收斂,加快了運(yùn)算速度,修復(fù)時(shí)間短,有良好的實(shí)時(shí)性,能夠適用于各種高分辨率的大圖。
附圖說明
為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實(shí)踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細(xì)描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標(biāo)記通常指代相同的部件或元素。
圖1示出了本發(fā)明一個(gè)實(shí)施例的計(jì)算設(shè)備100的結(jié)構(gòu)圖;
圖2示出了本發(fā)明一個(gè)實(shí)施例的圖像修復(fù)應(yīng)用200的結(jié)構(gòu)圖;
圖3示出了本發(fā)明一個(gè)實(shí)施例的第一圖像的示意圖;
圖4示出了本發(fā)明一個(gè)實(shí)施例的圖像金字塔的示意圖;
圖5示出了本發(fā)明一個(gè)實(shí)施例的對圖像金字塔的每一層圖像進(jìn)行填充融合的方法500的流程圖;
圖6示出了本發(fā)明一個(gè)實(shí)施例的涂抹區(qū)、涂抹擴(kuò)展區(qū)、可選區(qū)和屏蔽區(qū)的示意圖;
圖7A-圖7D示出了本發(fā)明四個(gè)實(shí)施例的采用傳播算法更新填充表Fm的示意圖;
圖8示出了本發(fā)明一個(gè)實(shí)施例的計(jì)算待填充點(diǎn)的RGB修復(fù)值的示意圖;
圖9示出了本發(fā)明另一個(gè)實(shí)施例的對圖像金字塔的每一層圖像進(jìn)行填充融合的方法900的流程圖;
圖10示出了本發(fā)明另一個(gè)實(shí)施例的對圖像金字塔的每一層圖像進(jìn)行填充融合的方法1000的流程圖;
圖11示出了本發(fā)明一個(gè)實(shí)施例的圖像修復(fù)方法1100的流程圖;以及
圖12示出了采用本發(fā)明的技術(shù)方案所得到的圖像修復(fù)效果圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算設(shè)備100的結(jié)構(gòu)圖。計(jì)算設(shè)備100可以是手機(jī)、平板電腦、個(gè)人數(shù)字助理(PDA)、個(gè)人媒體播放器設(shè)備、無線網(wǎng)絡(luò)瀏覽設(shè)備、應(yīng)用專用設(shè)備、或包括上面任何功能的混合設(shè)備。計(jì)算設(shè)備也可以是桌面計(jì)算機(jī)、筆記本電腦、服務(wù)器、工作站等設(shè)備。
如圖1所示,計(jì)算設(shè)備100中駐留有圖像修復(fù)應(yīng)用200,使得計(jì)算設(shè)備100能夠?qū)崿F(xiàn)圖像修復(fù)的功能。圖像修復(fù)應(yīng)用200可以作為搜索引擎的一個(gè)插件駐留于計(jì)算設(shè)備100的瀏覽器中,或作為一個(gè)獨(dú)立的軟件安裝于計(jì)算設(shè)備100中,本發(fā)明對圖像修復(fù)應(yīng)用200在計(jì)算設(shè)備100中的存在形式不做限制。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的圖像修復(fù)應(yīng)用200的結(jié)構(gòu)圖。如圖2所示,圖像修復(fù)應(yīng)用200包括交互模塊210、裁剪模塊220、金字塔構(gòu)造模塊230和填充融合模塊240。
交互模塊210適于獲取用戶對圖像的涂抹軌跡,并將被涂抹軌跡覆蓋的圖像區(qū)域作為涂抹區(qū)。涂抹軌跡由用戶針對圖像所做的涂抹操作而得出。當(dāng)計(jì)算設(shè)備的輸出設(shè)備為顯示器時(shí),涂抹操作可以是用戶點(diǎn)按、拖動(dòng)鼠標(biāo)的操作;當(dāng)計(jì)算設(shè)備的輸出設(shè)備為觸摸屏?xí)r,涂抹操作為用戶的交互手勢。
待修復(fù)的原始圖像往往尺寸比較大,因此,由裁剪模塊220對原始圖像進(jìn)行裁剪,以加快修復(fù)速度。裁剪模塊220適于根據(jù)涂抹區(qū)對圖像進(jìn)行裁剪,得到第一圖像。裁剪的方式是沿涂抹區(qū)向四周擴(kuò)展,第一圖像中包括所有的涂抹區(qū)和部分未涂抹區(qū)。根據(jù)一種實(shí)施例,第一圖像優(yōu)選地為正方形,且其面積為涂抹區(qū)面積的16倍,這樣能夠同時(shí)保證良好的修復(fù)效果和較快的計(jì)算速度。在實(shí)際情況中,可能難以控制第一圖像的面積剛好為涂抹區(qū)面積16倍,此時(shí),保證第一圖像的面積約為涂抹區(qū)面積的16倍即可。將第一圖像設(shè)置為面積為涂抹區(qū)面積16倍的正方形是一種優(yōu)選的實(shí)施例,當(dāng)然,第一圖像還可以設(shè)置為其他尺寸的其他形狀,本發(fā)明對此并無限制。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的第一圖像的示意圖。如圖3所示,原始圖像310的尺寸較大,陰影部分為用戶設(shè)置的涂抹區(qū)320。裁剪模塊220根據(jù)涂抹區(qū)320對原始圖像310進(jìn)行裁剪,得到面積約為涂抹區(qū)320面積16倍的正方形的第一圖像330。第一圖像330中包括全部的涂抹區(qū)320和部分非涂抹區(qū),而且非涂抹區(qū)的面積大于涂抹區(qū)320,在后續(xù)的圖像修復(fù)過程中,可以采用第一圖像中的非涂抹區(qū)來修復(fù)涂抹區(qū)320。
金字塔構(gòu)造模塊230適于以第一圖像為底層圖像建立n層的圖像金字塔。在圖像金字塔中,頂部層圖像更夠獲取到合適的邊界輪廓信息,底部層圖像能夠完善細(xì)節(jié)紋理信息,因此,采用圖像金字塔使得本發(fā)明的圖像修復(fù)方案能同時(shí)保持良好的紋理過渡和邊緣銜接,效果穩(wěn)定,適用于各種背景下的圖像修復(fù)。圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的圖像金字塔的示意圖。圖4所示的圖像金字塔共有五層,即n=5,這五層圖像分別為S1-S5。其中,S1為第一圖像,位于圖像金字塔的底層。根據(jù)一種實(shí)施例,圖像金字塔中相鄰兩層圖像的分辨率壓縮比例為0.7,以圖4為例,若底層圖像S1的尺寸為1000*1000像素,則其上面一層圖像S2的尺寸為700*700像素。根據(jù)一種實(shí)施例,圖像金字塔的頂層圖像Sn的尺寸不小于25*25,以保證有足夠的像素信息來支持圖像的修復(fù)。當(dāng)然,相鄰兩層圖像的分辨率壓縮比例也可以為其他數(shù)值,對頂層圖像Sn也可以設(shè)置其他的尺寸要求,本發(fā)明對此并無限制。
填充融合模塊240適于按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合,并將底層圖像的填充融合結(jié)果作為最終的圖像修復(fù)結(jié)果。圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的對圖像金字塔的每一層圖像進(jìn)行填充融合的方法500的流程圖。如圖5所示,首先,需要設(shè)置一些變量來實(shí)現(xiàn)計(jì)數(shù)和終止條件的判定,以保證填充融合過程的正常進(jìn)行。i為計(jì)數(shù)變量,用于標(biāo)記圖像在圖像金字塔中的層數(shù)。對于共有n層的圖像金字塔,其底層的層數(shù)為1,頂層的層數(shù)為n,1≤i≤n。由于填充融合過程從圖像金字塔的頂層開始,因此,將i的初值設(shè)為n。Mi為第i層圖像的最大迭代次數(shù),有Mi=2*i-1。當(dāng)然,最大迭代次數(shù)Mi還可以設(shè)置為采用其他的公式計(jì)算,但應(yīng)當(dāng)指出,由于頂層圖像收斂后,底層圖像可以更快收斂,因此,Mi的計(jì)算公式應(yīng)當(dāng)滿足“越靠近底層,最大迭代次數(shù)越小”的設(shè)計(jì)原則。m為計(jì)數(shù)變量,用于標(biāo)記在進(jìn)行每一層圖像的填充融合時(shí)所執(zhí)行的迭代次數(shù)。
填充融合模塊240在對圖像金字塔中的每層圖像進(jìn)行填充融合時(shí),均需要執(zhí)行步驟S510-S560六個(gè)步驟。
在步驟S510中,根據(jù)當(dāng)前層圖像(即第i層圖像)的涂抹區(qū)來確定涂抹擴(kuò)展區(qū)、屏蔽區(qū)和可選區(qū)。其中,涂抹擴(kuò)展區(qū)為對涂抹區(qū)進(jìn)行擴(kuò)展所得的區(qū)域。涂抹擴(kuò)展區(qū)的邊界處一部分像素屬于涂抹區(qū),一部分屬于非涂抹區(qū),這樣,可以充分利用周圍的非涂抹區(qū)信息對涂抹區(qū)進(jìn)行填充融合。根據(jù)一種實(shí)施例,涂抹擴(kuò)展區(qū)為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的區(qū)域,這樣,涂抹區(qū)中的每一個(gè)點(diǎn)均可以形成一個(gè)以該點(diǎn)為右下角頂點(diǎn)的7*7的塊。當(dāng)然,涂抹擴(kuò)展區(qū)還有其他的擴(kuò)展方式,例如,將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展5個(gè)像素,本發(fā)明對涂抹擴(kuò)展區(qū)的擴(kuò)展方式并無限制,發(fā)明人可以根據(jù)需要自行設(shè)置。
屏蔽區(qū)為由當(dāng)前層圖像的右起第一數(shù)量的列和下起第二數(shù)量的行所組成的區(qū)域,根據(jù)一種實(shí)施例,第一數(shù)量和第二數(shù)量均為6,即屏蔽區(qū)為由該層圖像最右邊的6列和最下邊的6行所組成的區(qū)域。當(dāng)然,第一數(shù)量和第二數(shù)量還可以被設(shè)為其他數(shù)值,本發(fā)明對二者的取值并無限制。優(yōu)選地,第一數(shù)量、第二數(shù)量的取值應(yīng)與涂抹擴(kuò)展區(qū)的擴(kuò)展方式相對應(yīng),例如,當(dāng)涂抹擴(kuò)展區(qū)為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展5個(gè)像素所得的區(qū)域時(shí),第一數(shù)量和第二數(shù)量均取值為5。
可選區(qū)為當(dāng)前層圖像中除了涂抹擴(kuò)展區(qū)和屏蔽區(qū)之外的區(qū)域。
圖6示出了本發(fā)明一個(gè)實(shí)施例的涂抹區(qū)、涂抹擴(kuò)展區(qū)、可選區(qū)和屏蔽區(qū)的示意圖。圖像600是圖像金字塔的頂層圖像,其尺寸為25*25。涂抹區(qū)610(被虛線包圍的區(qū)域)的尺寸為6*6。涂抹擴(kuò)展區(qū)620(白色區(qū)域)為將涂抹區(qū)中的每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的圖像區(qū)域。涂抹擴(kuò)展區(qū)620是涂抹區(qū)610的擴(kuò)展,在其邊界處一部分像素屬于涂抹區(qū)610,一部分像素屬于非涂抹區(qū),這樣,可以充分地利用周圍的非涂抹區(qū)信息對涂抹區(qū)610進(jìn)行填充融合。屏蔽區(qū)630(灰色區(qū)域)為由圖像600的最右邊的6列和最下邊的6行所組成的區(qū)域??蛇x區(qū)640(黑色區(qū)域)為圖像600中除了涂抹擴(kuò)展區(qū)620和屏蔽區(qū)630之外的區(qū)域。
隨后,在步驟S520中,為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)隨機(jī)設(shè)置一個(gè)位于可選區(qū)中的填充點(diǎn),并將各待填充點(diǎn)和填充點(diǎn)的對應(yīng)關(guān)系記錄于填充表Fm中。待填充點(diǎn)、填充點(diǎn)實(shí)際上都是像素點(diǎn)。為了描述方便,將待填充點(diǎn)和填充點(diǎn)的對應(yīng)關(guān)系描述為Fm(x,y)=(u,v),其中,(x,y)為涂抹擴(kuò)展區(qū)的待填充點(diǎn)的位置坐標(biāo),(u,v)為可選區(qū)的填充點(diǎn)的位置坐標(biāo)。
隨后,在步驟S530中,采用傳播算法對填充表Fm進(jìn)行更新。這一步實(shí)際上是采用相鄰的待填充點(diǎn)的填充點(diǎn)來對各待填充點(diǎn)的填充點(diǎn)進(jìn)行修正。修正方式有多種,例如,根據(jù)左邊的點(diǎn)來修正右邊的點(diǎn),根據(jù)上邊的點(diǎn)來修正下邊的點(diǎn),等等。圖7A-圖7D示出了本發(fā)明四個(gè)實(shí)施例的采用傳播算法更新填充表Fm的示意圖。
圖7A為從左到右的傳播算法,即采用左邊的點(diǎn)來更新右邊的點(diǎn)。(x-1,y)和(x,y)為左右相鄰的兩個(gè)待填充點(diǎn),其填充點(diǎn)分別為(u1,v1)、(u2,v2),即Fm(x-1,y)=(u1,v1),F(xiàn)m(x,y)=(u2,v2)。分別以(x,y)、(u1+1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊,并分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2。若s1<s2,則在填充表Fm中將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1+1,v1);否則,則不更新。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7,“相似距離”為兩個(gè)區(qū)塊中各像素RGB值的SSD(Sum of Squared Differences)距離,即兩個(gè)區(qū)塊中對應(yīng)位置像素的RGB值的歐式距離之和。例如,對于7*7的第一區(qū)塊和第二區(qū)塊,二者的SSD距離為:
其中,pij與qij(1≤i≤7,1≤j≤7)為兩個(gè)區(qū)塊中對應(yīng)位置上的像素。prij、pgij、pbij分別為像素pij的R、G、B值,qrij、qgij、qbij分別為像素qij的R、G、B值。當(dāng)然,在其他的實(shí)施例中,也可以將“相同尺寸”設(shè)置為其他數(shù)值,“相似距離”也可以采用其他公式計(jì)算,本發(fā)明對“相同尺寸”的數(shù)值以及相似距離的計(jì)算方式并無限制。
圖7B為從右到左的傳播算法,即采用右邊的點(diǎn)來更新左邊的點(diǎn)。(x+1,y)和(x,y)為左右相鄰的兩個(gè)待填充點(diǎn),其填充點(diǎn)分別為(u1,v1)、(u2,v2),即Fm(x+1,y)=(u1,v1),F(xiàn)m(x,y)=(u2,v2)。分別以(x,y)、(u1-1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊,并分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2。若s1<s2,則在填充表Fm中將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1-1,v1);否則,則不更新。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7,“相似距離”為兩個(gè)區(qū)塊中各像素RGB值的SSD距離,其計(jì)算公式如式(1)。
圖7C為從上到下的傳播算法,即采用上邊的點(diǎn)來更新下邊的點(diǎn)。(x,y-1)和(x,y)為上下相鄰的兩個(gè)待填充點(diǎn),其填充點(diǎn)分別為(u1,v1)、(u2,v2),即Fm(x,y-1)=(u1,v1),F(xiàn)m(x,y)=(u2,v2)。分別以(x,y)、(u1,v1+1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊,并分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2。若s1<s2,則在填充表Fm中將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1+1);否則,則不更新。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7,“相似距離”為兩個(gè)區(qū)塊中各像素RGB值的SSD距離,其計(jì)算公式如式(1)。
圖7D為從下到上的傳播算法,即采用下邊的點(diǎn)來更新上邊的點(diǎn)。(x,y+1)和(x,y)為上下相鄰的兩個(gè)待填充點(diǎn),其填充點(diǎn)分別為(u1,v1)、(u2,v2),即Fm(x,y+1)=(u1,v1),F(xiàn)m(x,y)=(u2,v2)。分別以(x,y)、(u1,v1-1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊,并分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2。若s1<s2,則在填充表Fm中將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1-1);否則,則不更新。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7,“相似距離”為兩個(gè)區(qū)塊中各像素RGB值的SSD距離,其計(jì)算公式如式(1)。
應(yīng)當(dāng)指出,在步驟S530中,可以采用圖7A-圖7D中的一種或多種傳播方式來對填充表Fm進(jìn)行更新,例如,可以在進(jìn)行了從左到右的傳播之后,再進(jìn)行一次從右到左的傳播,對填充表Fm進(jìn)行兩次更新;或者按照從左到右、從上到下、從右到左、從下到上的順序?qū)μ畛浔鞦m進(jìn)行四次更新;等等。多種傳播方式的混合使用可以使得填充表Fm的更新效果更好,從而使得Fm可以盡快收斂。但是同時(shí),多種傳播方式的混合使用自然也帶來了比僅使用一種傳播方式更多的運(yùn)算開銷,本領(lǐng)域人員可以對此進(jìn)行權(quán)衡,自行選擇合適的傳播方式。
隨后,在步驟S540中,采用上一次迭代過程中的填充表Fm-1對填充表Fm進(jìn)行更新。對于待填充點(diǎn)(x,y),其在填充表Fm-1、Fm中的填充點(diǎn)分別為(u1,v1)、(u2,v2)。分別以(x,y)、(u1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊,并分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2。若s1<s2,則將填充表Fm中待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1);否則,則不更新。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7,“相似距離”為兩個(gè)區(qū)塊中各像素RGB值的SSD距離,其計(jì)算公式如式(1)。
隨后,在步驟S550中,根據(jù)填充表對涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。以每一個(gè)填充點(diǎn)為左上角的頂點(diǎn)構(gòu)造相同尺寸的填充區(qū)塊;對于每一個(gè)待填充點(diǎn),將該待填充點(diǎn)對應(yīng)的填充點(diǎn)的填充區(qū)塊疊加至該待填充點(diǎn)處,其中,該待填充點(diǎn)的位置與其對應(yīng)的填充點(diǎn)的位置重合;計(jì)算每一個(gè)待填充點(diǎn)的RGB修復(fù)值,待填充點(diǎn)的RGB修復(fù)值為該待填充點(diǎn)處所疊加的各像素的RGB值的平均值。根據(jù)一種實(shí)施例,上述“相同尺寸”為7*7。
圖8示出了本發(fā)明一個(gè)實(shí)施例的計(jì)算待填充點(diǎn)的RGB修復(fù)值的示意圖。如圖8所示,待填充點(diǎn)1、2、3、4已分別被相應(yīng)的填充區(qū)塊①、②、③、④所填充,填充區(qū)塊的大小均為7*7。待填充點(diǎn)1僅被填充區(qū)塊①所覆蓋,因此其RGB修復(fù)值即為填充區(qū)塊①的左上角像素的RGB值。待填充點(diǎn)2被填充區(qū)塊①和②所覆蓋,其RGB修復(fù)值為填充區(qū)塊①的第一行第二列像素和填充區(qū)塊②的左上角像素的RGB值的平均值。待填充點(diǎn)3被填充區(qū)塊①、③所覆蓋,其RGB修復(fù)值為填充區(qū)塊①的第二行第一列像素和填充區(qū)塊③的左上角像素的RGB值的平均值。待填充點(diǎn)4被填充區(qū)塊①、②、③、④所覆蓋,其RGB修復(fù)值為填充區(qū)塊①的第二行第二列像素、填充區(qū)塊②的第二行第一列像素、填充區(qū)塊③的第一行第二列像素、填充區(qū)塊④的左上角像素的RGB值的平均值。
隨后,在步驟S560中,判斷是否Fm=Fm-1或m=當(dāng)前層圖像(即第i層)的最大迭代次數(shù)Mi。若否,則將m的值增加1,執(zhí)行步驟S520進(jìn)行下一輪迭代,繼續(xù)本層圖像的填充融合過程。若是,則進(jìn)一步判斷是否i=1(即是否本層圖像為底層圖像),若是,則結(jié)束填充融合過程,輸出圖像修復(fù)結(jié)果;若否,則繼續(xù)執(zhí)行步驟S570,進(jìn)行下一層圖像的填充融合。
在步驟S570中,對當(dāng)前的填充表Fm進(jìn)行放大,并根據(jù)放大的填充表對第(i-1)層圖像(即下一層圖像)的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。根據(jù)一種實(shí)施例,可以按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表Fm進(jìn)行放大,例如,若相鄰兩層的分辨率壓縮比例為0.7,則Fm(x,y)=(u,v)的放大結(jié)果為Fm’(x/0.7,y/0.7)=(u/0.7,v/0.7)。當(dāng)然,除上述方法之外,還可以采用其他的方法來對填充表進(jìn)行放大,本發(fā)明對填充表的放大方法不做限制。在對填充表進(jìn)行放大后,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,塊疊加融合的具體方法可以參考步驟S550。隨后,將計(jì)數(shù)變量i的值減1,并重新為Mi和m賦值,繼續(xù)執(zhí)行步驟S510-S560,進(jìn)行下一層圖像的填充融合。當(dāng)完成底層圖像的填充融合后,圖像修復(fù)過程結(jié)束,底層圖像的填充融合結(jié)果即為圖像修復(fù)的結(jié)果。
圖9示出了本發(fā)明另一個(gè)實(shí)施例的對圖像金字塔的每一層圖像進(jìn)行填充融合的方法900的流程圖。方法900與圖5所示的方法500的區(qū)別在于,增加了步驟S970,判斷第i層的圖像(即當(dāng)前層圖像)尺寸是否大于等于1000*1000。若是,則繼續(xù)執(zhí)行步驟S990,按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;重復(fù)上述放大填充表和塊疊加融合的步驟,直至完成底層圖像的塊疊加融合。若否,則繼續(xù)執(zhí)行步驟S980,按照與圖5所示的方法500相同的方法進(jìn)行下一層圖像的填充融合。
步驟S970的意義在于,本發(fā)明按照圖像金字塔從頂層到底層的順序依次對每層圖像進(jìn)行填充融合,上層圖像收斂后下層圖像能更快收斂(收斂即Fm=Fm-1)。根據(jù)經(jīng)驗(yàn),在像素為100萬左右的層中Fm已經(jīng)收斂,那么在接下來的層中,直接重復(fù)將填充表進(jìn)行放大并填充融合的過程,直至完成底層圖像的填充融合即可,而沒有必要為每層圖像重新設(shè)置填充表的初值F1并更新。這樣,減少了運(yùn)算次數(shù),能夠加快圖像修復(fù)的速度,修復(fù)時(shí)間短,有良好的實(shí)時(shí)性,能夠適用于各種高分辨率的大圖。
根據(jù)一種實(shí)施例,為了進(jìn)一步加快高分辨率圖像的修復(fù)效率,還可以對步驟S990進(jìn)行改進(jìn),將步驟S990改進(jìn)成圖10中的步驟S1090。即,當(dāng)當(dāng)前層圖像的尺寸大于等于1000*1000時(shí),直接按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表Fm放大至底層圖像,根據(jù)放大的填充表對底層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,融合后的結(jié)果即為圖像修復(fù)結(jié)果。
圖11示出了本發(fā)明一個(gè)實(shí)施例的圖像修復(fù)方法1100的流程圖。如圖11所示,該方法始于步驟S1110。
在步驟S1110中,獲取用戶對圖像的涂抹軌跡,將被涂抹軌跡覆蓋的圖像區(qū)域作為涂抹區(qū)。
隨后,在步驟S1120中,根據(jù)涂抹區(qū)對圖像進(jìn)行裁剪,得到第一圖像。根據(jù)一種實(shí)施例,第一圖像為面積為涂抹區(qū)面積16倍的正方形。
隨后,在步驟S1130中,以第一圖像為底層圖像建立圖像金字塔。根據(jù)一種實(shí)施例,圖像金字塔中相鄰兩層圖像的分辨率壓縮比例為0.7,頂層圖像的尺寸不小于25*25。
隨后,在步驟S1140中,按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合,將底層圖像的填充融合結(jié)果作為最終的圖像修復(fù)結(jié)果。填充融合的具體步驟可以參考前述對填充融合模塊240的描述,此處不再贅述。
圖12示出了采用本發(fā)明的技術(shù)方案所得到的圖像修復(fù)效果圖。如圖12所示,本發(fā)明取得了良好的修復(fù)效果,在去除圖像中的花瓶后,能夠較好地填充桌面上缺失部分的紋理,補(bǔ)齊桌角邊緣,無明顯的修復(fù)痕跡,效果自然。
A6:A1所述的圖像修復(fù)方法,其中,所述按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合的步驟包括:設(shè)置每層圖像的最大迭代次數(shù);從圖像金字塔的頂層圖像開始,依次執(zhí)行以下步驟:步驟一:設(shè)置迭代次數(shù)m=1,根據(jù)所述涂抹區(qū)確定涂抹擴(kuò)展區(qū)、屏蔽區(qū)和可選區(qū),其中,所述涂抹擴(kuò)展區(qū)為對所述涂抹區(qū)進(jìn)行擴(kuò)展所得的區(qū)域,所述屏蔽區(qū)為由當(dāng)前層圖像的右起第一數(shù)量的列和下起第二數(shù)量的行所組成的區(qū)域,所述可選區(qū)為當(dāng)前層圖像中除了所述涂抹擴(kuò)展區(qū)和所述屏蔽區(qū)之外的區(qū)域;步驟二:為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)隨機(jī)設(shè)置一個(gè)填充點(diǎn),其中,所述填充點(diǎn)位于所述可選區(qū)中;將待填充點(diǎn)與填充點(diǎn)的對應(yīng)關(guān)系記錄于填充表Fm中;步驟三:采用傳播算法對填充表Fm進(jìn)行更新;步驟四:采用上一次迭代過程中的填充表Fm-1對填充表Fm進(jìn)行更新;步驟五:根據(jù)填充表Fm對所述涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;步驟六:判斷是否Fm=Fm-1或m=當(dāng)前層圖像的最大迭代次數(shù),若是,則判斷本層圖像是否為底層圖像,若是,則結(jié)束,若否,則繼續(xù)進(jìn)行下一層圖像的填充融合;若否,則m增加1,執(zhí)行步驟二。A7:A6所述的圖像修復(fù)方法,其中,每層圖像的最大迭代次數(shù)Mi=2*i-1,其中,i為圖像在圖像金字塔中的層數(shù),圖像金字塔的底層的層數(shù)為1,頂層的層數(shù)為n,1≤i≤n。A8:A6所述的圖像修復(fù)方法,其中,涂抹擴(kuò)展區(qū)為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的圖像區(qū)域。A9:A8所述的圖像修復(fù)方法,其中,所述第一數(shù)量和所述第二數(shù)量均為6。A10:A6所述的圖像修復(fù)方法,其中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x-1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1+1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1+1,v1)。A11:A6所述的圖像修復(fù)方法,其中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x+1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1-1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1-1,v1)。A12:A6所述的圖像修復(fù)方法,其中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y-1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1+1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1+1)。A13:A6所述的圖像修復(fù)方法,其中,步驟三進(jìn)一步包括:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y+1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1-1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1-1)。A14:A6所述的圖像修復(fù)方法,其中,步驟四進(jìn)一步包括:按照以下步驟更新填充表Fm中各待填充點(diǎn)的填充點(diǎn):待填充點(diǎn)(x,y)在填充表Fm-1、Fm中的填充點(diǎn)分別為(u1,v1)、(u2,v2);分別以(x,y)、(u1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將填充表Fm中待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1)。A15:A10-14中任一項(xiàng)所述的圖像修復(fù)方法,其中,所述相似距離為兩個(gè)區(qū)塊中對應(yīng)位置像素的RGB歐氏距離之和。A16:A6所述的圖像修復(fù)方法,其中,步驟五進(jìn)一步包括:以每一個(gè)填充點(diǎn)為左上角的頂點(diǎn)構(gòu)造相同尺寸的填充區(qū)塊;對于每一個(gè)待填充點(diǎn),將該待填充點(diǎn)對應(yīng)的填充點(diǎn)的填充區(qū)塊疊加至該待填充點(diǎn)處,其中,該待填充點(diǎn)的位置與其對應(yīng)的填充點(diǎn)的位置重合;計(jì)算每一個(gè)待填充點(diǎn)的RGB修復(fù)值,待填充點(diǎn)的RGB修復(fù)值為該待填充點(diǎn)處所疊加的各像素的RGB值的平均值。A17:A10-14、16中任一項(xiàng)所述的圖像修復(fù)方法,其中,所述相同尺寸為7*7。A18:A6所述的圖像修復(fù)方法,其中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,執(zhí)行步驟一。A19:A6所述的圖像修復(fù)方法,其中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;重復(fù)上述放大填充表和塊疊加融合的步驟,直至完成底層圖像的塊疊加融合。A20:A6所述的圖像修復(fù)方法,其中,步驟六中繼續(xù)進(jìn)行下一層圖像的填充融合的步驟包括:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表放大至底層圖像,根據(jù)放大的填充表對底層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。
B25:B21所述的圖像修復(fù)應(yīng)用,其中,所述金字塔構(gòu)造模塊適于控制圖像金字塔的頂層圖像的尺寸不小于25*25。B26:B21所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于按照以下步驟按照從頂層到底層的順序依次對圖像金字塔的每一層圖像進(jìn)行填充融合:設(shè)置每層圖像的最大迭代次數(shù);從圖像金字塔的頂層圖像開始,依次執(zhí)行以下步驟:步驟一:設(shè)置迭代次數(shù)m=1,根據(jù)所述涂抹區(qū)確定涂抹擴(kuò)展區(qū)、屏蔽區(qū)和可選區(qū),其中,所述涂抹擴(kuò)展區(qū)為對所述涂抹區(qū)進(jìn)行擴(kuò)展所得的區(qū)域,所述屏蔽區(qū)為由當(dāng)前層圖像的右起第一數(shù)量的列和下起第二數(shù)量的行所組成的區(qū)域,所述可選區(qū)為當(dāng)前層圖像中除了所述涂抹擴(kuò)展區(qū)和所述屏蔽區(qū)之外的區(qū)域;步驟二:為涂抹擴(kuò)展區(qū)中的每一個(gè)待填充點(diǎn)隨機(jī)設(shè)置一個(gè)填充點(diǎn),其中,所述填充點(diǎn)位于所述可選區(qū)中;將待填充點(diǎn)與填充點(diǎn)的對應(yīng)關(guān)系記錄于填充表Fm中;步驟三:采用傳播算法對填充表Fm進(jìn)行更新;步驟四:采用上一次迭代過程中的填充表Fm-1對填充表Fm進(jìn)行更新;步驟五:根據(jù)填充表Fm對所述涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;步驟六:判斷是否Fm=Fm-1或m=當(dāng)前層圖像的最大迭代次數(shù),若是,則判斷本層圖像是否為底層圖像,若是,則結(jié)束,若否,則繼續(xù)進(jìn)行下一層圖像的填充融合;若否,則m增加1,執(zhí)行步驟二。B27:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于設(shè)置每層圖像的最大迭代次數(shù)為Mi=2*i-1,其中,i為圖像在圖像金字塔中的層數(shù),圖像金字塔的底層的層數(shù)為1,頂層的層數(shù)為n,1≤i≤n。B28:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于將涂抹擴(kuò)展區(qū)設(shè)置為將涂抹區(qū)中每一個(gè)像素向上并向左擴(kuò)展6個(gè)像素所得的圖像區(qū)域。B29:B28所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊還適于將所述第一數(shù)量和所述第二數(shù)量均設(shè)置為6。B30:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x-1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1+1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1+1,v1)。B31:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中左右相鄰的兩個(gè)待填充點(diǎn)(x+1,y)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1-1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1-1,v1)。B32:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y-1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1+1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1+1)。B33:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟三:對于涂抹擴(kuò)展區(qū)中上下相鄰的兩個(gè)待填充點(diǎn)(x,y+1)和(x,y),其填充點(diǎn)分別為(u1,v1)和(u2,v2);分別以(x,y)、(u1,v1-1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1-1)。B34:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟四:按照以下步驟更新填充表Fm中各待填充點(diǎn)的填充點(diǎn):待填充點(diǎn)(x,y)在填充表Fm-1、Fm中的填充點(diǎn)分別為(u1,v1)、(u2,v2);分別以(x,y)、(u1,v1)、(u2,v2)為左上角的頂點(diǎn)構(gòu)造相同尺寸的第一區(qū)塊、第二區(qū)塊、第三區(qū)塊;分別計(jì)算第一區(qū)塊與第二區(qū)塊、第三區(qū)塊的相似距離s1、s2;若s1<s2,則將填充表Fm中待填充點(diǎn)(x,y)的填充點(diǎn)更新為(u1,v1)。B35:B31-34中任一項(xiàng)所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于將所述相似距離設(shè)置為兩個(gè)區(qū)塊中對應(yīng)位置像素的RGB歐氏距離之和。B36:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊進(jìn)一步適于按照以下步驟執(zhí)行步驟五:以每一個(gè)填充點(diǎn)為左上角的頂點(diǎn)構(gòu)造相同尺寸的填充區(qū)塊;對于每一個(gè)待填充點(diǎn),將該待填充點(diǎn)對應(yīng)的填充點(diǎn)的填充區(qū)塊疊加至該待填充點(diǎn)處,其中,該待填充點(diǎn)的位置與其對應(yīng)的填充點(diǎn)的位置重合;計(jì)算每一個(gè)待填充點(diǎn)的RGB修復(fù)值,待填充點(diǎn)的RGB修復(fù)值為該待填充點(diǎn)處所疊加的各像素的RGB值的平均值。B37:B31-34、36中任一項(xiàng)所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于將所述相同尺寸設(shè)置為7*7。B38:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合,執(zhí)行步驟一。B39:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表進(jìn)行放大,根據(jù)放大的填充表對下一層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合;重復(fù)上述放大填充表和塊疊加融合的步驟,直至完成底層圖像的塊疊加融合。B40:B26所述的圖像修復(fù)應(yīng)用,其中,所述填充融合模塊適于按照以下步驟執(zhí)行步驟六中的繼續(xù)進(jìn)行下一層圖像的填充融合:判斷當(dāng)前層圖像的尺寸是否大于等于1000*1000,若是,則按照圖像金字塔中相鄰兩層的分辨率壓縮比例將填充表放大至底層圖像,根據(jù)放大的填充表對底層圖像的涂抹擴(kuò)展區(qū)進(jìn)行塊疊加融合。
在此處所提供的說明書中,算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與本發(fā)明的示例一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。
此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。
如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對象僅僅表示涉及類似對象的不同實(shí)例,并且并不意圖暗示這樣被描述的對象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。