可以搜索ffmpeg,不知道可以對你所說的格式進行轉(zhuǎn)換。java就別想這些了,最多也就是用框架封裝c的庫
創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為拱墅企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),拱墅網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
21.MATLAB支持的幾種圖像文件格式:
⑴JPEG(Joint Photogyaphic Expeyts Group):一種稱為聯(lián)合圖像專家組的圖像壓縮格式。
⑵BMP(Windows Bitmap):有1位、4位、8位、24位非壓縮圖像,8位RLE(Run length Encoded)的圖像。文件內(nèi)容包括文件頭(一個BITMAP FILEHEADER數(shù)據(jù)結(jié)構(gòu))、位圖信息數(shù)據(jù)塊(位圖信息頭BITMAP INFOHEADER和一個顏色表)和圖像數(shù)據(jù)。
⑶PCX(Windows Paintbrush):可處理1位、4位、8位、16位、24位等圖像數(shù)據(jù)。文件內(nèi)容包括文件頭、圖像數(shù)據(jù)和擴展色圖數(shù)據(jù)。
⑷TIFF(Tagged Iamge File Format):處理1位、4位、8位、24位非壓縮圖像,1位、4位、8位、24位packbit壓縮圖像,1位CCITT壓縮圖像等。文件內(nèi)容包括文件頭、參數(shù)指針表與參數(shù)域、參數(shù)數(shù)據(jù)表和圖像數(shù)據(jù)四部分。
⑸PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度圖像,8位和16位索引圖像,24位和48位真彩色圖像。
⑹GIF(Graphics Interchange Format):任何1位到8位的可交換的圖像。
⑺HDF(Hierarchial Data Format):有8位、24位光柵圖像數(shù)據(jù)集。
⑻ICO(Windows Icon resource):有1位、4位、8位非壓縮圖像。
⑼CUR(Windows Cursor resource):有1位、4位、8位非壓縮圖像。
⑽XWD(X Windows Dump):包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。
⑾RAS(Sun Raster image):有1位bitmap、8位索引、24位真彩色和帶有透明度的32位真彩色。
⑿PBM(Portable Bitmap)。
⒀PGM(Portable Graymap)。
⒁PPM(Portable Pixmap)。
2.MATLAB支持五種圖像類型,即二值圖像、索引圖像、灰度圖像、RGB圖像和多幀圖像陣列。
圖像類型
Double數(shù)據(jù)
uint8和uint16數(shù)據(jù)
二值圖像
圖像為m×n的整數(shù)矩陣,元素值范圍[0,1]
圖像為m×n的整數(shù)矩陣,元素值范圍[0,1]
索引圖像
圖像為m×n的整數(shù)矩陣,元素值范圍[0,p]
圖像為m×n的整數(shù)矩陣,元素值范圍[0,p-1]
灰度圖像
圖像為m×n的浮點數(shù)矩陣,元素值范圍[0,1]
圖像為m×n的整數(shù)矩陣,元素值范圍[0,255]或[0,65535]
RGB圖像
圖像為m×n×3的浮點數(shù)矩陣,元素值范圍[0,1]
圖像為m×n×3的整數(shù)矩陣,元素值范圍[0,255]或[0,65535]
其中,多幀圖像陣列是由多幀圖像組成的,每一幀圖像可以為前四種圖像中的一種,但組成一個多幀圖像陣列的圖像必須為同一種。cat函數(shù)可以將具有相同尺寸的幾個獨立圖像存成多幀文件。對于多幀圖像也可以從中提取單幀。
2.2.2 圖像類型判斷及轉(zhuǎn)換
1.在MATLAB中如果要判斷一個圖像文件的類型,可使用如下指令:
l isbw:若圖像為二值圖像,則返回真。
l isgray:若圖像為灰度圖像,則返回真。
l isind:若圖像為索引圖像,則返回真。
l isrgb:若圖像為RGB圖像,則返回真。
2.在MATLAB系統(tǒng)中,要將一個類型的圖像文件轉(zhuǎn)換成另一個類型的圖像文件,只需將前一個文件的圖像數(shù)據(jù)用imread讀出,再用imwrite以適當(dāng)?shù)母袷綄懙胶笠粋€圖像文件中去即可。另外,要將灰度圖像I轉(zhuǎn)換成RGB圖像,可運用cat指令。cat函數(shù)可以把一些單一的圖像合并成圖像序列。在圖像序列中每個圖像需有相同的大小,如果是索引圖像,色圖也要一致。
此外,MATLAB還提供了若干函數(shù),用于圖像類型的轉(zhuǎn)換。這些函數(shù)有:
l dither:用抖動法(dithering)轉(zhuǎn)換圖像。該函數(shù)通過顏色抖動(顏色抖動即改變邊沿像素的顏色,使像素周圍的顏色近似于原始圖像的顏色,從而以空間分辨率來換取顏色分辨率)來增強輸出圖像的顏色分辨率。該函數(shù)可以把RGB圖像轉(zhuǎn)換成索引圖像或把灰度圖像轉(zhuǎn)換成二值圖像。
l gray2ind:灰度圖像或二值圖像向索引圖像轉(zhuǎn)換。
l grayslice:設(shè)定閾值將灰度圖像轉(zhuǎn)換為索引圖像。
l im2bw:設(shè)定閾值將灰度、索引、RGB圖像轉(zhuǎn)換為二值圖像。
l im2double:將圖像數(shù)組轉(zhuǎn)換為double型。
l im2uint8:將圖像數(shù)組轉(zhuǎn)換為uint8型。
l im2uint16:將圖像數(shù)組轉(zhuǎn)換為uint16型。該函數(shù)不支持二值圖像序列的轉(zhuǎn)換。
l ind2gray:索引圖像向灰度圖像轉(zhuǎn)換。
l ind2rgb:索引圖像向RGB圖像轉(zhuǎn)換。
l mat2gray:將一個數(shù)據(jù)矩陣轉(zhuǎn)換為灰度圖像。
l rgb2gray:RGB圖像向灰度圖像轉(zhuǎn)換或?qū)⒉噬珗D轉(zhuǎn)換成灰度色圖。
l rgb2ind:RGB圖像向索引圖像轉(zhuǎn)換。包含三種不同方法:均衡量化、最小值量化、色圖映射。
l im2java:一般圖像向Java圖像轉(zhuǎn)換。
l label2rgb:標志圖像向RGB圖像轉(zhuǎn)換。
2.2.3 圖像的查詢及讀寫
在MATLAB中要查詢一個圖像文件的信息,只要用imfinfo指令加上文件及其完整路徑名即可。函數(shù)調(diào)用格式為:
info = imfinfo(filename,fmt)
info = imfinfo(filename)
參數(shù)fmt對應(yīng)于所有圖像處理工具箱中所有支持的圖像文件格式。
MATLAB提供了兩個重要的用于圖像文件的讀寫的指令,分別是從圖像文件中讀取數(shù)據(jù)的imread,以及將數(shù)據(jù)寫入到圖像文件中的imwrite。
1.imread的常見調(diào)用格式為:
A = imread(filename,fmt)
其作用是將文件名用字符串filename表示的,擴展名用fmt表示的圖像文件中的數(shù)據(jù)讀到矩陣A中。如果filename所指的為灰度級圖像,則A為一個二維矩陣;如果filename所指的為RGB圖像,則A為一個m×n×3的三維矩陣。Filename表示的文件名必須在MATLAB的搜索路徑范圍內(nèi),否則需指出其完整路徑。
imread的其他幾種重要的調(diào)用格式為:
[X,map] = imread(filename.fmt)
[…] = imread(filename)
[…] = imread(URL,…)
[…] = imread(…,idx) (CUR,ICO and TIFF only)
[…] = imread(…,’frames’,idx) (GIF only)
[…] = imread(…,ref) (HDF only)
[…] = imread(…,’BackgroundColor’,BG) (PNG only)
[A,map,alpha] = imread(…) (ICO,CUR and PNG only)
上面一些參數(shù)的含義如下:idx是指讀取圖標(cur、ico、tiff)文件中第idx個圖像,默認值為1。’frame’,idx是指讀取gif文件中的圖像幀,idx值可以是數(shù)量、向量或’all’。ref是指整數(shù)值。alpha是指透明度。
2.imwrite的常用調(diào)用格式為:
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(…,filename)
imwrite(…,Param1,Val1,Param2,Val2…)
其中imwrite(…,Param1,Val1,Param2,Val2…)可以讓用戶控制HDF、JPEG、TIFF等一些圖像文件格式的輸出特性。
在MATLAB中,默認的保存類型是uint8。由于PNG和TIFF格式支持16位的圖像,所以保存這類圖像時,保存類型就是uint16。
2.2.4 圖像的顯示
顯示圖像的最基本的手段是使用image函數(shù)。該函數(shù)還產(chǎn)生了圖像對象的句柄,并允許對對象的屬性進行設(shè)置。此外,imagesc函數(shù)也具有image的功能,所不同的是imagesc函數(shù)還自動將輸入數(shù)據(jù)比例化,以全色圖的方式顯示。
imshow函數(shù)比image和imagesc更常用,它能自動設(shè)置句柄圖像的各種屬性。imshow可用于顯示各類圖像。對于每類圖像,調(diào)用方法如下:
l imshow filename:顯示圖像文件。
l imshow(BW):顯示二值圖像,BW為黑白二值圖像矩陣。
l imshow(X,map):顯示索引圖像,X為索引圖像矩陣,map為色彩圖示。
l imshow(I):顯示灰度圖像,I為二值圖像矩陣。
l imshow(RGB):顯示RGB圖像,RGB為RGB圖像矩陣。
l imshow(I,[low high]):將非圖像數(shù)據(jù)顯示為圖像,這需要考慮數(shù)據(jù)是否超出了所顯示類型的最大允許范圍,其中[low high]用于定義待顯示數(shù)據(jù)的范圍。
有關(guān)圖像顯示的函數(shù)或其輔助函數(shù),除了上述的以外,MATLAB還提供了一些用于進行圖像的特殊顯示的函數(shù)。
l colorbar:為圖像的顯示增加一個顏色條,這一用法對于了解被顯示圖像的灰度級別特別有用。
l getimage:獲取圖像數(shù)據(jù)。
l immovie:將多幀索引圖像制作成連續(xù)圖像格式。其調(diào)用格式為:
mov = immovie(D,map)
不過這種功能只對索引圖像有效,其中D為多幀索引圖像陣列,map為索引圖像的對應(yīng)色階。對于其他類型圖像,則需要首先將其轉(zhuǎn)換為索引圖像。
l montage:多幀圖像的一次顯示。它能將每一幀分別顯示在一幅圖像的不同區(qū)域,所有子區(qū)的圖像都用同一個色彩條。
l movie:播放多幀連續(xù)圖像。
l subimage:在一個圖形區(qū)域內(nèi)顯示多個圖像。
l truesize:調(diào)整圖像顯示的尺寸。
l warp:顯示圖像的紋理表面圖。前面提到的圖像顯示手段都只能在二維平面上顯示,MATLAB6.5的一個強大功能是能將平面圖像顯示在空間三維曲面上。這是由warp函數(shù)的紋理成圖功能來實現(xiàn)的,該功能能通過雙線性插值將平面圖像投影到三維曲面上。
l zoom:將圖像或二維圖形進行放大或縮小顯示。zoom本身是是一個開關(guān)鍵,zoom on用于打開縮放模式,zoom off用于關(guān)閉該模式,zoom in用于放大局部圖像,zoom out用于縮小圖像。
至于多個圖像的顯示,則可分為兩個方面:在不同的圖形窗口顯示不同的圖像,可以用figure指令來實現(xiàn);在同一個圖形窗口顯示多圖,可以用subplot來實現(xiàn)。
第三章 圖像運算
3.1 圖像的點運算
點運算將輸入圖像映射為輸出圖像,輸出圖像每個像素點的灰度值僅由對應(yīng)的輸入像素點的值決定。它常用于改變圖像的灰度范圍及分布,是圖像數(shù)字化及圖像顯示的重要工具。點運算因其作用性質(zhì),也被稱為對比度增強、對比度拉伸或灰度變換。在真正進行圖像處理之前,有時可以用點運算來克服圖像數(shù)字化設(shè)備的局限性。
點運算實際上是灰度到灰度的映射過程。點運算不會改變圖像內(nèi)像素點之間的空間關(guān)系。設(shè)輸入圖像為A(x, y),輸出圖像為B(x, y),則點運算可表示為:
B(x, y) = f [A(x, y)] (3-1)
點運算可完全由灰度變換(gray-scale transformation)函數(shù)s=f (r)決定,后者描述了輸入灰度級與輸出灰度級之間的映射關(guān)系。圖像的點運算分為線性點運算和非線性點運算兩種。
3.1.1 線性點運算
線性點運算是指灰度變換函數(shù)f為線性函數(shù)時的運算。
如圖3.1,當(dāng)a>1時,輸出圖像對比度增大;當(dāng)a<1時,輸出圖像對比度降低;當(dāng)a=1,b=0時,輸出圖像就是輸入圖像的簡單復(fù)制;當(dāng)a=1,b≠0時,僅使輸出圖像的灰度值上移或下移,其效果是使整個圖像更亮或更暗。如果a為負值,暗區(qū)域?qū)⒆兞粒羺^(qū)域?qū)⒆儼?,點運算完成了圖像求補。
除了調(diào)節(jié)對比度以外,還有一種典型的線性點運算的應(yīng)用就是灰度標準化。設(shè)灰度圖像為I[W][H],其中W表示圖像寬度,H表示圖像的高度,那么灰度圖像的平均灰度和方 圖3.1 線性函數(shù)
差由如下計算公式得到:
平均灰度:
(3-2)
方差:
(3-3)
可以將其變換為具有相同均值和方差的變換函數(shù)(線性映射),其形式如下:
(3-4)
其中σ0和u 0為給定的變換參數(shù)。灰度標準化可以用來生成一些常用的平均模型。
3.1.2 非線性點運算
非線性點運算對應(yīng)于非線性映射函數(shù),典型的映射包括平方函數(shù)、對數(shù)函數(shù)、截取函數(shù)(窗口函數(shù))、域值函數(shù)、多值量化函數(shù)等。
閾值化處理是最常用的一種非線性點運算,它的功能是選擇一閾值,將圖像二值化,然后使用生成的二進制圖像進行圖像分割及邊緣跟蹤等處理。
直方圖均衡化也是一種非常常用的非線性點運算。它是指將一個已知灰度分布的圖像使用某種非線性灰度變換函數(shù)進行計算,使運算結(jié)果變成一幅具有均勻灰度分布的新圖像。經(jīng)過直方圖均衡化的點運算處理后,實際的直方圖將呈現(xiàn)參差不齊的外形,這是由于灰度級的可能個數(shù)是限造成的。在一些灰度級處可能沒有像素,在另外一些灰度級處則像素很擁擠。
點運算的MATLAB實現(xiàn):
I=imread('rice.png');
rice=double(I);
rice2=rice*0.5+50;
J=uint8(rice2);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);
轉(zhuǎn)載的地址忘啦。呵呵