版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、ImageJ 開發(fā)教程(苑永超 整理,僅供參考,勿作商業(yè)用途)目錄 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 一、ImageJ 簡述 2二、ImageJ 內(nèi)部結(jié)構(gòu) 3 HYPERLINK l bookmark16 o Current Document 三、ImageJ 通過插件擴展功能的方法 4 HYPERLINK l bookmark28 o Current Document 三、插件編輯、編譯、運行與部署 6 HYPERLINK l bookmark36 o Current Document 四、主要的包介紹 8 HYPE
2、RLINK l bookmark38 o Current Document 五、重要類方法介紹 10 HYPERLINK l bookmark40 o Current Document 1、創(chuàng)建圖象和圖象棧 10 HYPERLINK l bookmark46 o Current Document 2、創(chuàng)建圖象處理器 11 HYPERLINK l bookmark52 o Current Document 3 、載入和存儲圖象 11 HYPERLINK l bookmark54 o Current Document 4、圖象參數(shù) 11 HYPERLINK l bookmark56 o Curre
3、nt Document 5、操作像素 11 HYPERLINK l bookmark58 o Current Document 6、圖象轉(zhuǎn)換 12 HYPERLINK l bookmark60 o Current Document 7、直方圖與圖象統(tǒng)計量 12 HYPERLINK l bookmark62 o Current Document 8、點運算 12 HYPERLINK l bookmark64 o Current Document 9、濾波器 13 HYPERLINK l bookmark66 o Current Document 、幾何運算 13 HYPERLINK l book
4、mark68 o Current Document 、圖形運算 14 HYPERLINK l bookmark70 o Current Document 、顯示圖象和圖象棧 14 HYPERLINK l bookmark72 o Current Document 、圖象棧上的操作 15 HYPERLINK l bookmark74 o Current Document 、感興趣的區(qū)域 16 HYPERLINK l bookmark76 o Current Document 、圖象屬性 17 HYPERLINK l bookmark78 o Current Document 、用戶交互 17 H
5、YPERLINK l bookmark94 o Current Document 17、插件 18 HYPERLINK l bookmark96 o Current Document 18 、窗口管理 19 HYPERLINK l bookmark98 o Current Document 19 、其他函數(shù) 19 HYPERLINK l bookmark100 o Current Document 六、學(xué)習(xí)資源 20紹數(shù)字圖象處理的 理方面的專業(yè)人士, 果不特別指出,文中的部分內(nèi)容和例子都為ImageJ軟件包自 帶或采自相關(guān)書籍(如紹數(shù)字圖象處理的 理方面的專業(yè)人士, 果不特別指出,文中的部分
6、內(nèi)容和例子都為ImageJ軟件包自 帶或采自相關(guān)書籍(如ImageJ 官網(wǎng)( HYPERLINK /ij/index.html /ij/index.html )上有英文的用戶 手冊和教程,以及一些例子。本教程主要是為看英文比較累的 朋友 提供一些快速的入門。如果想在 ImageJ 上開發(fā)自己的圖象處理算 法,建議先熟悉 java 編程知識。本教程基本不對 ImageJ 菜 單中提供的各種文件操作、圖象編輯、圖象處理、圖象分析等功能 作詳細介紹,請讀者自行探索;也不準備介各種算法和操作,本文假定讀者是圖象處本教程的重點是如何進行二次開發(fā),如數(shù)字圖像處理-java 語言描述) ,中 文注釋是后加的
7、。一、 ImageJ 簡述圖象處理的流程無外乎就是打開圖象數(shù)據(jù)文件,將圖象數(shù) 據(jù)加載到內(nèi)存,然后對該內(nèi)存中的圖象數(shù)據(jù)進行一系列處理 (分割、檢測、濾波、合成、識別、顯示等等) ,最后可能 還需要將處理結(jié)果保存成某種格式的文件。對于一般的用戶來說,類似 ACDsee 之類的傻瓜式的軟件足 夠了。但是科學(xué)人士除了希望有廣泛的、成熟的處理算法庫 可以直接調(diào)用外,一般還希望開發(fā)自己的特有的圖象處理算 法、特有的圖象處理步驟、甚至特有的交互過程。 ImageJ 就是這樣的工具軟件。ImageJ 是基于 Java 的 ,ImageJ 在設(shè)計上實現(xiàn)了一個可以擴展的 基本框架,開發(fā)人員可以通過其提供的接口來擴
8、展圖象處理 功能。 ImageJ 提供了很多現(xiàn)成的功能,這些功能可以通過菜 單來調(diào)用,也可以調(diào)用相應(yīng)的類的方法的 API 。用戶只要按照接口要求開發(fā)好自己的處理模塊,并按照要求 部署和配置,Image 就可以自動加載和調(diào)用。ImageJ 是完全開源和免費的,特別適合教學(xué)和科研。其關(guān)鍵的 特 征有:1 、在菜單上集成了一系列的交互式工具,用于創(chuàng)建、加載、編輯、分析、處理、保存圖象,支持常見的圖象文 件 格式。目前, ImageJ 主菜單上的集成的主要功能:File:打開、保存、創(chuàng)建新的圖象文件。Edit:圖象的編輯和繪制操作。Image: 圖象的修改、轉(zhuǎn)換、幾何操作。Process: 圖象的點運
9、算、濾波器、以及多幅圖象之間算法操作。Analysze: 對圖象數(shù)據(jù)進行統(tǒng)計分析、用直方圖或其他格式顯示出來。Plugin: 編輯、編譯、執(zhí)行、管理用戶自己定義的插件。2 、提供簡單的插件機制,幫助開發(fā)人員專注于自己的圖象處理過程的開發(fā),從而擴展 ImageJ 的功能。3 、提供宏語言或javascript 腳本以及解釋器,可以通過組合 現(xiàn)有的函數(shù),來實現(xiàn)客戶化的處理過程。這種方式不 需 要用戶具有 Java 知識。此外還有一些使用其他腳本語言 擴展的方式。用戶要想在 ImageJ 的基礎(chǔ)上擴展自己的圖象處理功能、進 行二次開發(fā),需要了解 Image 內(nèi)部結(jié)構(gòu)。二、ImageJ內(nèi)部結(jié)構(gòu)Imag
10、cPlusImageCanvas(java.at .Canvas)ImageWindow(java,awt. Frame)java.awt. I mageImagcPlusImageCanvas(java.at .Canvas)ImageWindow(java,awt. Frame)java.awt. I mage11 Tnage ProcessorrkTT 丄iI11 Tnage ProcessorrkTT 丄iIfile, URL圖1 ImageJ圖象及圖象棧的內(nèi)部表示上面是一個ImageJ的內(nèi)部結(jié)構(gòu)圖,我們結(jié)合該圖以“打開并顯示一個圖象”的功能為例說明一下ImageJ的工作原理:1、 首
11、先創(chuàng)建一個打開文件類FileOpener 對象,并調(diào)用其Open方法。2、該Open方法首先從圖象文件中讀取像素數(shù)據(jù),并放到數(shù)組pixels中。3、 隨后創(chuàng)建一個ImagePlus的對象。如圖所見,這個對象成員中包含有一些指針,指向其他對象:一個圖象處理器對象ImageProcessor的子類:該對象主要是提供對當(dāng)前圖象數(shù)據(jù)的處理操作。(像素數(shù)據(jù)保存有對應(yīng)的像素數(shù)組pixels)。一個圖象棧對象ImageStack :用來保存多幅圖象數(shù)據(jù)或圖象處理的中間數(shù)據(jù)。文件信息類對象filelnfo :存有圖象的尺寸、位深度等的相關(guān)信息。AWT的圖象對象類img:通過操作將圖象數(shù)據(jù)映射到Image對象上
12、,實現(xiàn)圖象的顯示。Frame 窗口類的子類對象 ImageWindow :實現(xiàn)對圖象窗口 的管理。上述這些對象在 FileOpener 對象的 open 方法中創(chuàng) 建 ,并 賦 予 ImagePlus 中 的 相 應(yīng) 成 員 : ip,stack,fileInfo,img,win 。4、如果該圖象需要顯示,則調(diào)用ImagePlus 的 show 方法。該方法調(diào)用圖象處理器對象ip 的 createImage()方法創(chuàng)建和圖象數(shù)組數(shù)據(jù)對應(yīng)的圖象類Image 對象。并將img 指向它。然后創(chuàng)建 ImageWindow 窗口。設(shè)置窗口畫布、窗口布局等。 最后通過 ImagePlus 的 draw (
13、)方法調(diào)用完成繪制。切記:FileOpener 的 open() 方法返回的是對應(yīng)的 ImagePlus 對象。通過 該對象,我們可以毫不費力地找到上述相關(guān)的對象,尤其是 擁 有眾多圖像處理操作和算法的 ImageProcessor ,調(diào)用需要的 方法, 從而快捷地完成我們的工作。三、ImageJ 通過插件擴展功能的方法插件是一種小型的程序模塊,該模塊遵循簡單的標準化接 口,可以被集成到軟件框架中,從而擴展宿主軟件的功能。 ImageJ 的許多內(nèi)置的圖象處理功能也是通過插件來實現(xiàn)的。 這里所謂的簡單的標準化接口其實就是 Java 的接口類。ImageJ 提供如下三種不同的接口插件:Plugin
14、 :啟動該插件時不需要打開一幅圖象PluginFilter :啟動該插件時,需要傳遞給該插件一幅打開 圖象的指針。該插件的操作將施加在該圖象上。PluginFrame :該插件可以擴展一個獨立的操作交互界面。很顯然,通過 Plugin 擴展的插件,如果要處理圖象,則需 要自己去處理獲取圖象數(shù)據(jù),這可以通過獲取一個已經(jīng)被打開 的圖象文件的指針、自己打開或新創(chuàng)建一個圖象文件并獲取指針,或直接在內(nèi)存中開辟圖象數(shù)據(jù)的方式實現(xiàn)。該方式的自由度很高。該接口的用法示例如下:/對話框打開并顯示一個圖像文件import ij.plugi n.*;import ij.plugi n.frame.*;import
15、ij.*;public class Test_Plugl n impleme nts Plugi n public void run( Stri ng arg) Opener xx = new Open er();xx.ope n(); / end of class用戶要實現(xiàn)該接口的 run 方法。實際上,用的最多的是通過例如下:實際上,用的最多的是通過例如下:PluginFilter 擴展的插件。該接口的示/實現(xiàn)將一幅 8bit位的灰度圖取反import ij.I magePlus;import ij.plug in filter.Plug In Filter;import cess .I
16、mageProcessor;public class My ln verter impleme nts PlugI nFilter /取列為u/取列為u,行為v位置的像 素的值/設(shè)置列為u,行為v位置的如果用戶要實現(xiàn)復(fù)雜的界面和交互,可以擴展plugFrame 插件。public int setup(Str ing arg, ImagePlus im) retur n D0ES_8G; / this plug in accepts 8-bit grayscale imagespublic void run (ImageProcessor ip) in tw =ip.getWidth(); /
17、獲得圖象寬度in th=ip.getHeight(); / 獲得圖象高度/ iterate over all image coord in atesfor (i nt u = 0; u w; u+) for (i nt v = 0; v h; v+) intp=ip.getPixel(u, v);/取列為u,行為v位置的像素的值ip.putPixel(u, v, 255 -p); /設(shè)置列為u,行為v位置的像素 值用戶要實現(xiàn)該接口的兩個方法。public int setup(String arg, ImagePlus im)系統(tǒng)執(zhí)行 PlugInFilter 類型的插件時,首先調(diào)用 setup
18、 方法獲得 插件本身的一些信息。該方法利用打開圖象的ImagePlus 對象im 中包含的信息,進行版本校驗,處理參數(shù)的設(shè)置等操作。public void run(ImageProcessor ip)該方法接收 ImageProcessor 類型的對象,其中包含待處理的 圖象及其相關(guān)信息。上面的程序段里利用了相關(guān)的方法獲取圖 象尺寸、像素等信息。另外上述的run() 方法中還可以通過 直接操作像素數(shù)組來實現(xiàn)類似的功能,但效率要高多了,程 序段如下:public void run (ImageProcessor ip) in tw =ip.getWidth();/獲得圖象寬度in th=ip.g
19、etHeight();/獲得圖象高度byte pixels =(byte)ip.getPixels() ; / 獲得像素數(shù)組/ iterate over all image coord in ates for (i nt u = 0; u w; u+) for (i nt v = 0; v New ,在選擇對應(yīng)的插件 類型,來生成相應(yīng)的插件原型源代碼,用戶可以在該代碼的基礎(chǔ)上編寫自己的插件。但是ImageJ 內(nèi)置的 java 代碼編輯器不能提供在線的語言幫助,不是很 方便。用戶可以通過 Eclipse 或其他集成編輯器開發(fā)插件。、 編譯ImageJ 自帶了 java 編譯器, 可以在 Imag
20、eJ 的菜單中使用。 選擇 Plugi ns-Compile andRun.選擇要編譯和執(zhí)行的插件。這種方式,插件編譯后會立即被加載和執(zhí)行,如果是PluginFilter插件則一定要用菜單方式打開一幅可被處理的圖像文件,否則插件 執(zhí)行會報錯。、 菜單設(shè)置 要從菜單上執(zhí)行該插件功能。選擇 Plugins-Shortcuts-Install Plugins. . 在彈出的對話框中設(shè)置如下:Plugin :從下拉列表中把你的插件選擇出來( ImageJ 已經(jīng)對部署到FLgs或下一級的目錄下的插件自動識別出來料)。Menu :選擇要將菜單項放到那個子菜單項目 下 。 ( 一 般 插 件放 到plugi
21、ns 或 plugins/shortcuts 下)。Command :顯示在菜單上的對應(yīng)的菜單項的名稱。Shortcuts:對應(yīng)的快捷鍵(一般是F+數(shù)字,如F4)。Argument :該插件需要的參數(shù),對應(yīng)插件的 setup 方法中要傳入的參數(shù)。、 從菜單中去除菜單項選擇Plugins-Shortcuts- remove.,從對話框列表中選擇要刪除 的菜單項名稱。 ImageJ 重起后生效。6、 使用 Eclipse 開發(fā)插件使用Eclipse 的好處:a、隨時可以得到語法幫助,b、相關(guān)類和方法的用法幫助,c、自動補全完成功能,d、調(diào)試和跟蹤代碼的執(zhí)行。開發(fā)效率將大大提高。使用 Eclipse
22、 步驟如下:從官網(wǎng)下載最新的ImageJ 源碼包(我下載的是這個鏈接 的包 HYPERLINK /ij/download/src/ij145e-src.zip%ef%bc%89%e3%80%82 /ij/download/src/ij145e-src.zip)。用eclips建一個java的空的工程(我命名為ImageJ),將145&src.zip包解開,將其中的 source 下的子目錄等內(nèi)容拷貝到 ImageJ 下通過選擇 ”project -clean ”來編譯 ImageJ 工程, Complier.java 會報 錯,這是因為使用的缺省的 java1.5 版本太高。具體做法是:將 I
23、mageJ 安裝包自帶的 jre 目錄拷貝到 ImageJ 的目錄下, 在工程瀏覽窗口的 ImageJ 工程上右鍵打開菜單,選擇工程 屬性,打開 javaBuild Path-Libraries 。先將原先的 1.5 版本的 jre 刪除,然后選擇 Add Libraries ,在 libraries type 類 型列表框 中選擇 ”jre system library ”,再選擇 ”alternate JRE ”,按 Install JREs 按牛,在新的對話框中選擇”Add”, 在新的對話框中選擇 ”Browse 按紐,選擇 ImageJ 目錄下的 jre 目錄即可。確認 后 jre1.
24、4 就被添加進了了,選擇JRE 為剛添加的 jre 版本的就 OK 了。此時可以選擇運行 ImageJ 的 main() 方法,成功則顯示 ImageJ 的主界面。注意,在libraries type類型列表框不要選擇J2EE1.4,而要使用 jesystem library 去添加 jre1.4 , 否則會報 java/lang/NoClassDefFoundError: java/lang/Object)。這時如果 ImageJ 下 Plugins 目錄下有插件源代碼,則瀏覽窗口提示有錯誤。提示的錯誤是“ declare package “” not expectpackage XXX”
25、。 這 是 因 為 插 件 的 java 文 件 前 面 沒 有 package 語句,因為這些代碼并不打到IJ.jar 包里去,不影響 ImageJ 本身的編譯。切記不要給插件加 package聲明語句,否則雖然錯誤提示沒了,插件執(zhí)行卻會出錯。要開發(fā)插件,只需要在 Plugins 下創(chuàng)建新的類即可,要繼承 相應(yīng)的接口,實現(xiàn)要求的方法,注意將自動添加的包聲明去掉。要編譯插件,在 eclipse 菜單中選擇 project-clean 即可。要使用最新的 IJ.jar 可以通過 ImageJ 菜單的 help-ImageJ n ews 選擇升級。大量的插件可以通過 ImageJ 菜單的 help
26、-plugins 在線訪問。7 、 使用宏程序 對于經(jīng)常使用的一系列的插件調(diào)用,可以通過ImageJ 的 Plugins-Macros-Record 記錄成為宏程序,這樣只要 選擇執(zhí)行該宏就可以實現(xiàn)原先的一系列操作料。要充分發(fā)掘 ImageJ 的功能,需要熟悉 Image 主要的類結(jié)構(gòu)和 相互關(guān)系,下面按照功能介紹以下主要的包的類圖結(jié)構(gòu)。IJFrame(from 飾1 WindowManager-SappletA叩同 (tfom apple!) t3_SijIJFrame(from 飾1 WindowManager-SappletA叩同 (tfom apple!) t3_SijappletIm
27、agcPhji、ImaccSiackImagelAppletMenu1Execute rLookUpTable四、主要的包介紹圖2 ImageJ 中ij包的類圖類型(所在包)主要類類說明圖象(包ij)ImagePlus該類的一個對象和一幅要處理的圖象(或 圖象序列)相對應(yīng)。包含有圖象處理類ImageProcessor抽象類。ImageStack可擴充圖象序列(棧),依附于 ImagePlus對象圖象處理器(包 Icess )ImageProcessor這是一個抽象類,有四個派生類ByteProcessor用于8位(byte )類型的灰度圖象和索引 彩 色圖象的處理類。其子類Bin aryPro
28、cessor 實現(xiàn)了僅包含 0和255兩個像素值的圖象。ShortProcessor16位灰度圖象的處理類。FloatProcessor32位(浮點型)圖象的處理類。ColorProcessor32位彩色(3X8位RGB通道加上 8位 通道?。﹫D象的處理類。插件(包 ij.plugin )plugi n包含 void run(String arg) 方法。 不需要先打開圖象。插件(包ij.plug in .filter)PlugI nFilter要實現(xiàn)下面兩個方法int setup(Str ing arg, ImagePlus imp) void run (ImageProcessor ip)
29、插件(包ij.plugin.Frame)PlugI nFrame用戶要實現(xiàn)界面相關(guān)的消息處理類型(所在包主要類類說明GUI(包 ij.gui )ColorChooser顏色選取對話框類NewImage交互式創(chuàng)建新圖象的類Gen ericDialog提供一套標準父互字段可配置 的對話框窗口類ImageCa nvasAwt中Canvas的子類,描述窗口中顯示圖象的映射關(guān)系(源矩形 框、縮放因子),也處理發(fā)送到該窗口 的鍵盤和鼠標事件ImageW in dowAwt中Frame 的 子類,用于 顯 示ImagePlus 類型圖象的屏幕窗 口。 該類對象包含一個 ImageCa nvas類的實例,用于
30、圖象的實際顯示。Roi定義一個用戶選取的感興趣區(qū) 域。是ROI 類(Line,OvalRoi,PolygonRo) 等的超類Ellir FillerImtiizeStiiHMa-ShriStabticKUyEcSlDlistlCSoKyil MillerTy peC htp,酣 rtc1FtDaiProces&orC cilfirPnv 已 mJniiiigjcC on cncr,RytePrQecssoiBlirtlFTCubeSlat KCoiuencrFki.ill3hSXLEllir FillerImtiizeStiiHMa-ShriStabticKUyEcSlDlistlCSoKyi
31、l MillerTy peC htp,酣 rtc1FtDaiProces&orC cilfirPnv 已 mJniiiigjcC on cncr,RytePrQecssoiBlirtlFTCubeSlat KCoiuencrFki.ill3hSXL:iHi 門 3巧 Proeeitsor中cess 包的類圖圖 3 ImageJ匚 S2iL3rflE1lkIlcr二” 二r! FlcKiiiiEi&ncstoIorStali il i ,!ITMedkirtCul窗口管理 (包 lj)Win dowMa nger提供一套靜態(tài)方法用于ImageJ 窗口管理工具(包)提供了一套靜態(tài)工具方法,包 括圖
32、象選取、創(chuàng)建、打開和保存以及 操作環(huán)境信息獲得的方法R am*demStream匚nTiffDccMlcrCisssL&aderffrorn 1 ang)Tools(from utilF ramefrom nwt jImpon DialogR am*demStream匚nTiffDccMlcrCisssL&aderffrorn 1 ang)Tools(from utilF ramefrom nwt jImpon DialogFlugioC lassLoaderJpegEncodcrJpglnfoOpenDialog輸入輸出(包 jj.io)包含從文件度?。ㄝd入)和往 文件寫入各種格式和編碼圖圖
33、4 ImageJ 中jj.io包的類圖五、重要類方法介紹1、創(chuàng)建圖象和圖象棧ImageJ中有多種方式創(chuàng)建圖象。ImagePlus 類中支持創(chuàng)建一個空的ImagePlus 對象、從URL路徑中創(chuàng)建、從給定的Image 圖象中創(chuàng)建、從ImageProcess對象中也可以創(chuàng)建、從給定的圖象棧中可以創(chuàng)建、可以創(chuàng)建一個空 的圖象棧、可以返回與當(dāng)前ImagePlus相關(guān)聯(lián)的圖象棧。IJ類支持創(chuàng)建一個給定參數(shù)的ImagePlus 圖象NewImage 類用幾個靜態(tài)方法支持創(chuàng)建ImagePlus 圖象和圖象棧ImageProcessor 支持用Image 的Createlmage()方法創(chuàng)建當(dāng)前圖象的副本 并
34、以標準Image圖象返回。2、創(chuàng)建圖象處理器ImageProcessor 對象表示可以被創(chuàng)建、處理、銷毀但一般不能在 屏 幕上顯示的圖象。ImagePlus 的 getProcessor 返回指向圖象的 ImageProcessor 對象的引 用,如果沒有,則創(chuàng)建一新的,如果沒有 Image 則返回空。 setProcessor 設(shè)置該對象ImageProcessor 提供了創(chuàng)建 createProcessor, 復(fù)制 duplicate 。 子類中可以從 Image 圖象創(chuàng)建或按照指定尺寸、色彩等參數(shù)構(gòu)造。3、載入和存儲圖象IJ 類中提供了很多類似菜單功能的靜態(tài)方法:Run(“Open”/”
35、Revert”/”Save”)可用于 IO 的方法 open(path)/openImage(path)/save(path)/saveAs(fmt,path)Opener 類提供了重載的 open()/openImage()/openMultiple() 方法打開模式設(shè)置,以及針對特定格式的打開方 法、 保存方法。FileOperner 類從該類保存的文件信息的位置上打開或保存圖象4 、圖象參數(shù)ImageProcessor 中獲得圖象的寬度和高度、打開或關(guān)閉像素插值 ColorProcessor 提供彩色轉(zhuǎn)灰度,權(quán)值獲取/設(shè)置getWeightingFactors() set Weighti
36、ngFactors()5、操作像素ImageProcessor 提供了很多坐標訪問方法: getPixel(x,y)/putPixel(x,y,val) get(x,y)/put()x,y 是 2D 索引不驗證參數(shù)的版本 get(i)/put(i) 是按照 1D 索引訪 問 帶 f 是浮點型的版本。獲取像素數(shù)組指針getPixels還可以整行 /整列 /整個數(shù)組的操作彩色圖象使用 getRGB()/setRGB()/getHSB()/setHSB() 等進行6、圖象轉(zhuǎn)換ImageProcessor 實現(xiàn)了不同類型間圖象相互轉(zhuǎn)換的基本方法(非破 壞性轉(zhuǎn)換)convertToByte/conver
37、tToShort/convertToFloat/convertToRGBImagePlus 類型可以通過 ImageConvert 類的方法進行轉(zhuǎn)換(破 壞性轉(zhuǎn)換) convertToGray8()/convertToGray16()/convertToGray32()/ convertToRGB()/converToHSB/convertHSBToRGB convertRGBStackToRGB( 將 RGB 棧轉(zhuǎn)成單幅的 RGB 圖象 ) 諸如此類7、直方圖與圖象統(tǒng)計量ImageProcessor 的方法 獲取圖象或感興趣區(qū)的直方圖 Int getHistogram() Int getHi
38、stogramMax() Int getHistogramMin() Int getHistogramSize() Int setHistogramRange() Int setHistogramSize() 其 他 的 統(tǒng) 計 量 可 通 過 ImageStatictics 及 其 子 類 ByteStaticticsShortStaticticsFloatStaticticsColorStaticticsStackStatictics 實現(xiàn)。8、點運算對 ImageProcessor 類型的對象的整幅圖或感興趣區(qū)域的全體像素施加 該運算。abs() 給每個像素替換成其絕對值 add(val
39、) /and(val)/or(val)/sqr()/sqrt()/xor/log() applyTable(int lut) / 查表影射 autoThreshold() / 轉(zhuǎn) 2 值圖象 gamma(g) / gamma 矯正max(val)/ min(val)/ 將所有大于 /小于 val 的值設(shè)置成 valmax(val)/ min(val)multiply(val) 乘 /noise(val) 加噪聲隨即量val threshold(int th) / th0, 否則255多幅像素運算, ImageProcessor 組合 2 幅圖的方法: copyBits(ImageProcess
40、or, int, int, int mode ) mode 運算類型中在 Blitter 中定義: COPY/ADD/AND/COPY_INVERTED/DIFFERENCE/DIVIDE/9、濾波器imageProcessor 類提供濾波方法:void convolve(float kernel, int w, int h ) 對當(dāng)前圖象執(zhí)行線形卷積,濾波kernel 大小為 w*h 。 void convolve3x3(int kernel) 對當(dāng)前圖象執(zhí)行線形卷積,濾波kernel 大小為 3*3int 數(shù)組dilate()使用 3*3 最小濾波器膨脹運算erode()使用 3*3 最小
41、濾波器腐蝕運算findEdges()使用 3*3 邊界濾波器運算( Sobel 算子)medianFilter ()使用 3*3 中值濾波器運算smooth()使用 3*3 均值濾波器運算(箱式濾波)sharpen ()使用 3*3 類似 Laplacian 的濾波核銳化處理10 、幾何運算ImageProcessor 類支持如下運算ImageProcessor crop()對象/ 對當(dāng)前圖象或 ROI 區(qū)域創(chuàng)建一個新的 ImageProcessor void flipHorizontal() 當(dāng)前圖象或 ROI 區(qū)域破壞性水 平鏡像 void flipVertical() 當(dāng)前圖象或 ROI
42、 區(qū)域破 壞性垂直鏡像 ImageProcessor resize (int w,int h)對象/ 對當(dāng)前圖象或 ROI 區(qū)域產(chǎn)生一個縮放的新的ImageProcessorM 象 Void rotate(double an gle) /破壞性按照一定角度順時針地旋轉(zhuǎn) angle 角度 ImageProcessor rotateLeft()/ 按照一定角度逆時針地旋轉(zhuǎn)90角度,/ 并返回一個新的 ImageProcessorImageProcessor rotateRight()/ 按照一定角度順時針地旋轉(zhuǎn)90角度,/ 并返回一個新的ImageProcessor Void Scale(doub
43、leXScale, double yScale)/ 破壞性地比例縮放圖象或 ROI 區(qū)域Void setBackgroundValue ( double value )/ 設(shè)置圖象背景值,用于 rotate 或scale Boolean getInterpolate()/ 獲取當(dāng)前的雙線性插值狀態(tài)Void setInterpolate(bool)/ 獲取當(dāng)前的雙線性插值狀態(tài)Double getInterpolatedPixel ( double x, double y )/ 返回使用插枝得到的對連續(xù)坐標(x,y) 得到的像素值 Double getInterpolatedRGBPixel (d
44、oublex, double y )/ 對彩色圖象返回使用插枝得到的對連續(xù)坐標(x,y) 得到的像素 值11 、圖形運算ImageProcessor 提供了一系列的繪制 /填充各種圖形的函數(shù)。Void drawXXX() 形式Void fill() / fillXXX( )形式Void setXXX () 設(shè)置對象屬性,線寬等、顯示圖象和圖象棧只有 ImagePlus 對象可以使用下面的方法, ImageProcessor 必須通過得 到關(guān)聯(lián)的 ImagePlus 對象來顯示的。Void draw()/draw(x,y,wid,height)Int getcurrentSlice / 獲得當(dāng)前
45、圖象棧片段的索引號Int getID / 得到圖象的 IDString getTitle() 得到圖象的名字ImageWindow getWindow() / 返回顯示用的窗體Void hide() / 關(guān)閉顯示當(dāng)前圖象的任何窗體Void repaintWIndow()Void setSlice(index)Void setTItle(String)Void show() / show(statusString) /打開窗口顯示此圖象 (狀態(tài)條中顯示文本 ) Void updateAndDraw() / 根據(jù) ImagPocessor 數(shù)據(jù)更新圖象并顯示Void updateAndRepain
46、tWindow() / 當(dāng)前圖象數(shù)據(jù)重新繪制,并更新頭信 息(緯度 / 類型等)、圖象棧上的操作ImagePlus 類:創(chuàng)建空的圖象棧 ( 具有和 ImagePlus 相同的寬度、高度、色表,新棧 自動依附ImagePlus)ImageStack createEmptyStack() 取得與 ImagePlus 相關(guān)聯(lián)的圖象棧,沒有則調(diào)用 getStack()ImageStack getImageStack() 取得與 ImagePlus 相關(guān)聯(lián)的圖象棧 ,不存在則調(diào)用 createEmptyStack() 成單層 棧ImageStack getStack()取得棧大小Int getStack
47、Size() 替換當(dāng)前圖象棧Void setStack(String title, ImageStack stack)ImageStack 類:將 IP 指定的圖象加載到棧的尾部,并給新 層分配 label Void addSlice(String label, ImageProcessor ip )將 IP 指定的圖象加載到棧的第 n 層之后,并給新 層分配 label Void addSlice(String label, ImageProcessor ip, int n )將由 pixels 指定的(像素數(shù)組)圖象加入到棧的末尾Void addSlice(String label, Ob
48、ject pixels ) 刪除棧末尾的一層Void deleteLastSlice() 刪除棧中指定的一層Void deleteSlice(int n) 取得棧中圖象的高度Int getHeight() 取得棧中圖象的寬度Int getWidth() 將整個棧作為一個一維像素數(shù)據(jù)的叔祖返回Object getImageArray()返回棧的第 n 層圖象的一維像素數(shù)組Object getPixels(int n )創(chuàng)建一個 ImageProcessor 為棧的第 n 層,并返回它 ImageProcesspr get Processor(int n )返回棧的層數(shù)Int getSize()
49、返回第 n 層棧的標簽String getSliceLabel(int n )返回棧的所有層標簽String getSliceLabel()將像素數(shù)組分配給第 n 層 setPixels(Object pixels, int n ) 設(shè)置第 n 層標簽setSliceLabel (String label, int n )、感興趣的區(qū)域所謂感興趣的區(qū)域 (ROI) 就是為隨后的處理選擇一個特別的圖象 區(qū) 域,通常由用戶交互式來選定的。 ImageJ 支持的 ROI 類型,包 括:矩形( Roi 類)、 (PlygnRoi類、 FreehandRoiROI 對象一般和橢圓型( OvalRoi 矩
50、形( Roi 類)、 (PlygnRoi類、 FreehandRoiROI 對象一般和橢圓型( OvalRoi 類)、直線Line類)、多邊形 /折線類)、點集( PointRoi 類) ImagePlus 對象相關(guān)聯(lián)。ImagePlus 類 : Roi Void Void Void Void 為 null 或?qū)挾然蚋叨葹?ImageProcessor 象 (ByteProcessporgetRoi()KillRoi() setRoi(int x,int y, int width, int height) setRoi(java.awt.Rectangle rect) setRoi (Roi
51、roi ) / 給圖象分配一個指定的0 ,則刪除所有現(xiàn)有的ROI 。getMask() / 對 于 矩 形 的類型 );否則返回 null 。ROIROI ,并顯示,如果 ROI返回一個掩膜圖RoiLineOvalRoiPointRoiPolygonRoi 類 注意構(gòu)造方法的參數(shù)ImageProcessor 類:ImageProcessor 對象也可有一個關(guān)聯(lián)的 ROI ,該機制類似于用于 ImagePlus 的機制,但又有所不同。特使是,一個非矩形 ROI 表 示為一個包圍矩形與由一個一維 int 數(shù)組指定的大小相同的掩 膜的組合。ImageProcessor getMask() / 同 上
52、Byte getMaskArray() / 返回掩膜的 byte 數(shù)組,若此圖象沒有掩膜 則返回 null Rectangle getRoi()Reset Roi() / 設(shè)置 ROI 包含整副圖象Void setMask(ImageProcessor mask) / 定義一個 byte 掩膜以限制對一個不 規(guī)則 ROI 的處理。 Mask 大小必須與當(dāng)前 ROI 相同。Void setRoi(int x,int y, int width, int height)Void setRoi(java.awt.Rectangle rect)Void setRoi (Roi roi )Void set
53、Roi (java.awt.Polygon poly ) / 多邊型 ROIImageStack 類 : 只有矩形 ROI 可用語圖象棧 :Java.awt.Rectangle getRoi() / void setRoi ( java.awt.Rectangel)IJ 類:下面的靜態(tài) ROI 方法作用于當(dāng)前活動(用戶選定)的圖象Static void makeLine(int u1,int v1,int u2,int v2 ) /創(chuàng)建一個直線選擇 ROIStatic void makeOval(int x,int y, int width, int height) / 創(chuàng)建一個橢圓型IROS
54、tatic void makeRectangle(int x,int y, int width, int height) / 創(chuàng)建一個矩形 IRO15 、圖象屬性有時候需要從一個插件向另一個對性傳遞結(jié)果。但是 run() 方法 本身不提供返回值。解決辦法:可以將要傳遞的值保存到對應(yīng)的 ImagePlus 的對象的屬性中。屬性就是一個關(guān)鍵字/值對。屬性必須是字符串,值可為任意 java 對象。 ImageJ 中由哈希表支 持該機制。Java.util.Properties getProperties() / 返回圖象中所有的Object getProperty(String key)Void s
55、etProperty(String key, Object value)16 、用戶交互IJ 類 文本輸出: Static void error ( String msg) / 對話框標題為 ImageStatic void error (String title,String msg ) / 對話框標題由 title 指定Static void log ( String msg) /在日志窗口中顯示一行msg Static void write ( String msg)/ 向日志窗口寫入 一行 msg對話框:Static double getNumber(String prompt, do
56、uble defVal) / 讀取用戶輸入的 數(shù)字 Static String getString (String prompt, String defVal) / 讀取用戶輸 入的字符串 Static void noImage() / 提示沒有圖象對話框Static void showMessage( String msg) /提示消息Static void showMessage ( String title,String msg ) / 對話框標題由 title 指 定 Static boolean showMessageWithCancel(String title,String ms
57、g) / 用戶 按取消則返回 false進展條和狀態(tài)條:Static void showProgress(double prog) / 更新 ImageJ 中進度條, 0=prog1 則進度條被刪除。Static void showProgress(int I, int n) / 0=in在狀態(tài)條中顯示一個消息Static void showStatus ( String msg ) /在狀態(tài)條中顯示一個消息查詢鍵盤:Static Boolean altKeyDown()Static Boolean escapePressed()Static void resetEscape()Static
58、Boolean shiftKeyDown()Static Boolean spaceBarDown()其他:Static void beep() / 發(fā)出蜂鳴聲Static ImagePlus getImage() / 返回當(dāng)前活動圖象的引用 Static void wait ( int ms) / 等待 ms 毫秒GenericDialog 類 該類提供了一種簡單機制用于創(chuàng)建一個包含對多個不同類型字段 的對話框窗體。這些對話框窗口的布局是自動建立的。17 、插件插件接口:Plugin :應(yīng)用時不需要任何圖象,可用于獲取圖象、顯示窗體等。 PluginFilter: 用于處理已有的圖象。其中 setup() 返回插件的特征,有一些預(yù) 定義的值 DOES_8G 8 位灰度圖像 DOES_8C8 位索引彩色圖像DOES_1616 位灰度圖像DOES_3232 位 float 圖像DOES_RGB 3*8RGB 圖像DOES_ALL 任何類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年全天候型外墻漆項目投資價值分析報告
- 2025年中國門禁點在線巡更系統(tǒng)市場調(diào)查研究報告
- 2025年中國炸蟹鉗市場調(diào)查研究報告
- 2025年中國水口釘?shù)扑榱鲜袌稣{(diào)查研究報告
- 2025年工業(yè)電氣自動化產(chǎn)品項目可行性研究報告
- 2025年全封閉手推車項目可行性研究報告
- 2025至2030年電鍍鐵線制品項目投資價值分析報告
- 2025至2030年剪線工具項目投資價值分析報告
- 2025至2030年不銹鋼湯勺項目投資價值分析報告
- 2025年全球及中國寵物用狂犬疫苗行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 西安經(jīng)濟技術(shù)開發(fā)區(qū)管委會招聘筆試真題2024
- 六年級2025寒假特色作業(yè)
- 小紅書食用農(nóng)產(chǎn)品承諾書示例
- 二年級數(shù)學(xué)上冊100道口算題大全(每日一練共12份)
- 《幼兒教師職業(yè)道德》教案
- 2021年高考山東卷化學(xué)試題(含答案解析)
- 客服百問百答
- GA/T 766-2020人精液PSA檢測金標試劑條法
- 品管圈活動提高氧氣霧化吸入注意事項知曉率
- 農(nóng)產(chǎn)品質(zhì)量安全控制課件
- 幼兒園中班健康:《小河馬的大口罩》 課件
評論
0/150
提交評論