圖片填充演算法
㈠ 二值形態學中的區域填充和圖像分割中的區域生長,它們的原理有相通的地方嗎
區域生長法圖像分割是直接根據像素的相似性和連通性來對圖像進行聚類的演算法。基本原理是,雹鋒給出若干種子點,然後依次對這些種子點進行如下操作,直到種子點集合為空:判斷種子點四鄰域或八鄰域的像素點是否和種子點相似(灰度相似或其他測度相似),如果相似則將該點加入種子點集合,否則不作處理。
該演算法原理很簡單,但在數據結構的組織上卻需要技巧,本文介紹一種簡易的數據組織方式實現該演算法。
如上圖所示,左圖為一幅W*H大小的圖像示意圖,利用區域生長法圖像分割演算法,該圖像被分割(聚類)為7塊;右圖為相應的數據結構,圖像分割的結果屬於圖像空間數據,其實就是一系列的像素點坐標數組或與像素點坐標直接關聯的屬性數組如租肆茄FLAG的數組等,這個數組的維度一定是W*H,而分割結果體現在數組元素的排列順序:同一類別的元素連續存儲。然而類別的界限無法用該數組表明,而只能用另外一個描述數組,這里我們稱之為圖像空間數據的「元弊察數據」數據,這個數組的有效維度為空間數據的類別數,即7,每個元素代表的是空間數據數組中每個類別的元素個數,其實也就相應地表明了每個類別的指針位置。
㈡ 計算機圖形學 C#區域填充
填充演算法滿復雜的,常用的有活動邊表填充,我以前也嘗試用c#做圖形學的程序。現在假設你知道填充演算法,需要注意的是,c#中Graphics類沒有setPixel()方法。你需要創建一個image(點陣圖)對象,在點陣圖中進行填充,然後再用Graphics類中的setImage()方法將點陣圖顯示在屏幕中。大概是這樣,時間很長了,裡面一些方法可能不太對,詳細你查msdn,祝你成功!
㈢ android能實現不規則圖形的圖案填充么
可以。
圖像的填充有2種經典演算法。
一種是種子填充法。種子填充法理論上能夠填充任意區域和圖形,但是這種演算法存在大量的反復入棧和大規模的遞歸,降低了填充效率。
另一種是掃描線填充法。
㈣ NI Vision:二值圖像連通域標記演算法
前面說到,要使用Labwindows + NI Vision(IMAQ Vision)這套商用開發框架來做數圖課設。很明顯,這套虛擬儀器開發平台由NI Instrument(美國國家儀器公司)開發的。大名鼎鼎的Labview軟體就是這個公司開發的。相比較而言,Labwindows使用ANSI C開發,但應用場景是差不多的。
在做課程作業的時候,遇到了一個很有趣的應用。輸入是米粒,比背景灰度要低,目的是輸出米粒的顆數、面積、周長和孔數,這是工業上的一個很常見的應用。具體處理過程是二值化後使用低通濾波,並計算各種性質。
界面設計如下,可以看到米粒的詳細情況。
讓我感興趣的,是通過怎樣的演算法能夠得到米粒的數量?之前曾經用過OpenCV中找最大外界矩形這個函數,但沒有具體了解演算法實現。直覺告訴我原理應該是相似的。
可以看到,每一個米粒之間都是不連通的。這里就就提出了一個概念。 連通區域(Connected Component) 是指圖像中相鄰並有相同像素值的圖像區域。 連通區域分析(Connected Component Analysis,Connected Component Labeling) 是指將圖像中的各個連通區域找出並標記。
二值圖像分析最重要的方法就是連通區域標記,它是所有二值圖像分析的基礎,它通過對二值圖像中白色像素(目標)的標記,讓每個單獨的連通區域形成一個被標識的塊,進一步的我們就可以獲取這些塊的輪廓、外接矩形、質心、不變矩等幾何參數。如果要得到米粒的數量,那麼通過連通區域分析(這里是二值圖像的連通區域分析),就可以得到標記的數量,從而得到米粒的數量。
下面這幅圖中,如果考慮4鄰接,則有3個連通區域,8鄰接則是2個。
從連通區域的定義可以知道,一個連通區域是由具有相同像素值的相鄰像素組成像素集合,因此,我們就可以通過這兩個條件在圖像中尋找連通區域,對於找到的每個連通區域,我們賦予其一個唯一的 標識(Label) ,以區別其他連通區域。
連通區域分析的基本演算法有兩種:1)Two-Pass兩便掃描法 2)Seed-Filling種子填充法 。
兩遍掃描法(Two-Pass),正如其名,指的就是通過掃描兩遍圖像,就可以將圖像中存在的所有連通區域找出並標記。
說了一堆數學語言,其實用圖很好理解
種子填充方法來源於計算機圖形學,常用於對某個圖形進行填充。它基於區域生長演算法。至於區域生長演算法是什麼,可以參照我的這篇 文章 。
同樣的,上動圖
NI Vision 中的運算元定義如下
OpenCV中也有相應的運算元
這里參照其他博客實現一下Two-Pass演算法,Seed-Filling演算法就偷懶不搞了。
Reference:
OpenCV實現圖像連通組件標記與分析
OpenCV-二值圖像連通域分析
數字圖像處理技術 ——鄧繼忠(我的任課老師)
㈤ 為什麼移動端需要@2x或者@3x的圖片
上篇文章 講到了我對設備像素比的理解,但在寫文章的過程中,也一直有一個疑惑的地方:為什麼在 Retina 屏下需要使用 @2x(兩倍)甚至是 @3x(三倍)的圖片呢?這樣的用法跟設備像素比之間有什麼關系呢?
為了明白這個問題,也看了一些文章,本文就是我對這個知識點的一些總結。
前面我們介紹了設備物理像素和 CSS 像素,這兩個像素一個是實體的,一個是抽象的單位。關於圖片,還有一個像素需要我們引起注意:點陣圖像素。
一般我們在頁面上使用的圖片都是點陣圖,點陣圖的最小單位也是像素,叫做點陣圖像素。點陣圖像素是圖片本身的特性,在圖片產出時就已經確定了,和 CSS 像素以及設備物理像素沒有任何關系。
點陣圖像素是點陣圖最小的單位,其不可以再被拆分。
以 IPhone6 為例,IPhone6 手機的尺寸為 375px * 667px,如果我們在 PC(非 Retina 屏)上製作出一個寬度為 375px 的圖片,該圖片在電腦上顯示正常,但嘩此在手機上顯示就模糊了。這是為什麼呢?不是解析度越高,圖片顯示越清晰嗎,為什麼圖片反而變得模糊了呢?
這個問題需要從以下幾個方面來解釋:
前面的文章提到過:設備像素比的意義在於規定設備以多少個物理像素來顯示慎蘆讓 1px 的 CSS 像素也是如此。
此外,該結論對於點陣圖一樣適用:設備像素比規定了設備以多少個物理像素來顯示 1px 的點陣圖像素。
舉個例子,一張 375px * 200px 的點陣圖,其擁有 375 * 200 = 75000 個點陣圖像素,如果我們在 PC(設備像素比為1) 上看這張圖片,將會以 375 * 200 = 75000 個物理像素來顯示,因此在 PC 上圖片的清晰度不變。如果我們在 IPhone6 上預覽這張圖片,將會以 375 * 200 *4 = 300000 個物理像素來顯示這張圖片。
當我們在 IPhone6 上預覽圖片時,其用來顯示圖片的物理像素個數為圖片像素的 4 倍(300000 個物理像素),而圖片實際上只有 75000 個有效像素,我們知道像素是最基本的單位,無法再進行拆分,因此剩下的 300000 - 75000 = 225000 個物理像素將採用填充的方法來顯示圖片。
所謂填充,就是就近取色,這也是造成圖片模糊的原因。下面這張圖片解釋的十分形象:
前面已經知道,造成圖片模糊的原因是點陣圖的像素總數和對應的物理像素個數不一致,那麼只需要增加圖片的點陣圖像素數目,使其接近於設備物理像素就解決了這個問題。
因此我們採用 @2x 或者 @3x 的圖片,就是為了使圖片的點陣圖像素和設備點陣圖像素的數目接近於 1:1,就能使圖片清晰顯示不模糊。
前面講到了圖片在移動設備上預覽時變得模糊是因為圖片的點陣圖像素總數小於物理像素的總數,而設備採用填充演算法進行填充的原因。如果點陣圖像素的數目大於物理像素,又是怎樣的情況呢?
舉個例子,我們將一張 750px * 400px 的圖片在 PC(設備像素比寬局為1)上設置為 375px * 200px 顯示,由於點陣圖的像素數目大於物理像素的數目,這樣一來即使使用全部的物理像素也無法完整顯示這張圖片,因此瀏覽器也會經過一定的演算法,將圖片進行壓縮,使得壓縮後圖片的點陣圖像素等於物理像素。
對於這個過程,下面這張圖片解釋的十分形象:
我們已經知道,不管是圖片的點陣圖像素數目大於物理像素,還是圖片的點陣圖像素數目小於物理像素都會造成顯示上的差異,要麼是圖片變模糊了,要麼是色差和銳利度減少了。因此,要想完美的適配多種設備,就需要 針對不同設備採用相應的圖片,使得圖片的點陣圖像素數目等於物理像素。
通常情況下,設備像素比為 1 的設備上使用 @1x 的圖片,在設備像素比為 2 的設備上採用 @2x 的圖片,在設備像素比為 3 的設備上採用 @3x 的圖片。如果對於移動端適配要求完美,就採用上述的方案,如果要求一般,提供 @1x 和 @2x 的圖片也是可以的。要求再低一點,可以統一使用 @2x 的圖片,這樣對於低分屏會增加一些流量消耗,但是顯示效果也是不錯的。
本文解答了為什麼在高清屏下需要使用 @2x 或者 @3x 的圖片,這是由於點陣圖的像素數目小於物理像素數目的原因,對應的,在後面也分析了點陣圖像素數目大於物理像素數目的情況。
附:參考資料
移動端高清、多屏適配方案
使用Flexible實現手淘H5頁面的終端適配
完。
㈥ 像素圖片怎麼無損放大
在進行圖像編輯時,有時候需要將一張圖片放大,但是放大後茄汪棚卻出現了模糊的情況,這是因為當我們將圖片放大時,圖片中的像素點會變得更加稀疏,導致圖片質量下降。但是,有些軟體可以幫助我們放大圖片並保持圖片清晰度。嗨格式圖片無損放大器是一款專業圖片修復工具,採用最新AI人工智慧技術,來達到使圖片變得更加清晰的目的。而且操作簡便,只需幾個步驟即可完成對圖片的修復。在圖片修復完畢之後,增強人的視覺感官效果~
>具體操作方法如下:嗨格式圖片無損放大器
WPS
很多人都以為,這款軟體只能進行文檔表格編輯,其實它內置的圖片編輯器,還能幫助我們進行多種圖片處理。直接右擊圖片,選擇【編輯】-【圖片編輯】。
隨後進入照片編輯器界面,點擊右側的【修復】,選擇【高清修復】,這里提供了2倍無損放大和4倍無損放大,直接選擇放大的倍數就可以了。
以上就是分享給大家的圖片變清晰的部方法啦。可以幫助你輕松地將模糊的圖片變得更加清晰。
㈦ 請教二值圖像點陣區域孔洞的填充方法
四連通填充:
-找到孔洞中的一點,記錄坐標(x,y)
-對於記錄的點開始進行如下操作,直到所有記錄的點都被處理完成:
-將當前點填充,判斷該點上、下、左、右各點是否位於孔內,是否還未填充,如是,將該點添加到記錄點數組的末尾
由此,處理完所有記錄的點後,四連通的孔洞可填充完畢。以上演算法比較簡單,存在優化的可能。
㈧ C# 填充任意封閉圖形
用更高效的掃槐肢描線填充演算法。
http://course.cug.e.cn/cugFirst/computer_graphics/class/course/2-3-2-a.htm
這個是講解。
想含緩要我的代碼的鉛老世話請發郵件給我[email protected]
㈨ PPT中,用直線曲線圍成的不規則圖形如何填充
最簡單的方法是:首先對灰度圖像進行變換,然後對二值圖喊中友像進行二值化,然後用總像素數與總圖像面積的比值,得到圖像的面積。如果你想做的很好,這些步驟中的任何鄭槐一個都培旅會很微妙,特別是二值化,有很多種演算法,你需要結合實際情況選擇常用的演算法,或者根據圖像的特點編寫程序來自動選擇演算法。另一個問題,彩色圖像的彩色分割本身就是一門碩士學位課程。
㈩ VC++ 6.0編寫計算機圖形學中的種子填充演算法,想用遞歸的八向連通域,求助!
用八鄰域的話,有重復的,這個你要考慮到,一般都用四鄰域的,八鄰域你可以設置一個標志數組,對於已經處理的點就不管了