Ⅰ imagesc不支持復數值
imagesc不支持復數值。
絕對值一個數在數軸上所對應點到原點的距離。而這個數軸上的數」很明顯是實數。復數由實數和虛數共同組成,虛數是沒有絕對值的,從而導致復數也不能有絕對值,更不能把它的模叫為絕對值。
1、反正切函數y=arctanx的值域是(-π/2,π/2),這是定義里的內容。
2、對於復數z=x+yi,x,y∈R,θ=arctan(y/x)只能是一個輻角,不一定是主值,因為主值的范圍是[0,2π),與反正切的值域不一致。
3、若z在第一象限,則Arg(z)=arctan(y/x);若z在第二象限,則π/2<Arg(z)<π,而此時 -π/2<arctan(y/x)<0;從而Arg(z)=π+arctan(y/x)。
deltagx:
-0.1:0.01:0.1imagesc(detalgy,detalgx,pho1_rece1);用image系列繪圖的坐標和普通繪圖命令得到的坐標在縱軸方向是相反的,可以用axis命令手動設置坐標格式。axis xy就是普通的坐標格式。axis ij就是image系列的坐標格式。
imagesc縮放數據並顯示圖像對象。使用方法編輯本段回目錄 imagesc函數放大圖像數據以覆蓋當前色圖的整個范圍,並顯示圖片。
Ⅱ matlab 中imagesc的用法
這個命令其實是整個的矩陣按照imagesc(x,y,C) ,其中的xy(行和列)坐標系畫出來的,至於坐標是如何標注的,這要看你如何定義你的矩陣了!~一般程序是有兩個for循環做成的矩陣時,格式是內循環對應的是Y坐標,外循環生成的數據則是X坐標!
例如下面是我做的程序:
detalgx=-0.1:0.01:0.1;
detalgy=-0.2:0.01:0.2;
for X=1:1:length(detalgx)
Dx=detalgx(:,X);
for Y=1:1:length(detalgy)
Dy=detalgy(:,Y);
% M=1*(1+Dy);
g=1;
N=3;
M=100;
v1=v*(1+Dx);
v2=v*(1+Dy);
v3=v;
g1=gm;
g2=gm;
g3=gm;
alpha=(v*sqrt(omega1^2-omega^2+N*omega^2))/sqrt(N*v^2+M*g^2);
t=pi/alpha;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[pho_t]=Fidelityexpfig3(t,g1,g2,g3,omega1,omega2,omega3,v1,v2,v3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
C1_t=sqrt(pho_t(1,1));
pho1_rece1(X,Y)=(cos(theta/2))^4+pho_t(1,1)*(sin(theta/2))^4+...
(C1_t+conj(C1_t)+pho_t(3,3)+pho_t(4,4)+pho_t(5,5)+...
pho_t(6,6)+pho_t(7,7)+pho_t(8,8)+pho_t(9,9)+...
pho_t(10,10))*cos(theta/2)^2*sin(theta/2)^2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
C7_t=pho_t(7,1)/sqrt(pho_t(1,1));
pho2_rece1(X,Y)=(cos(theta/2))^4+pho_t(7,7)*(sin(theta/2))^4+...
(C7_t+conj(C7_t)+pho_t(1,1)+pho_t(2,2)+pho_t(3,3)+...
pho_t(4,4)+pho_t(5,5)+pho_t(8,8)+pho_t(9,9)+...
pho_t(10,10))*cos(theta/2)^2*sin(theta/2)^2;
end
end
set(gca,'ydir','normal')
figure;
subplot(2,2,1);
%生成的圖像的水平軸對應detalgy=-0.2:0.01:0.2;
%生成的圖像的豎直軸對應detalgx=-0.1:0.01:0.1
imagesc(detalgy,detalgx,pho1_rece1);
用image系列繪圖的坐標和普通繪圖命令得到的坐標在縱軸方向是相反的,可以用axis命令手動設置坐標格式。
axis xy就是普通的坐標格式。
axis ij就是image系列的坐標格式。
imagesc
縮放數據並顯示圖像對象。
使用方法編輯本段回目錄 imagesc函數放大圖像數據以覆蓋當前色圖的整個范圍,並顯示圖片。
1.imagesc(C)
將輸入變數C顯示為圖像。C中的每一個元素對應著圖像中的一個矩形局域。C中的元素值的對應與色圖中的索引,色圖決定了每一個補片的顏色。
2.imagesc(x,y,C)
將輸入變數C顯示為圖像,並且使用x和y變數確定x軸和y軸的邊界。如果x(1) > x(2) 或 y(1) > y(2),圖像是左右或上下反轉的。 《Simulink與信號處理》
3.imagesc(...,clims)
歸一化C的值在clims所確定的范圍內,並將C顯示為圖片。clims是兩元素的向量,用來限定C中的數據的范圍,這些值映射到當前色圖的整個范圍。 book.iLoveMatlab.cn
4.h = imagesc(...)
返回圖像對象的句柄。
【注】
x 和 y 對C中的元素沒有影響,它們僅僅影響坐標軸的標注。如果length(x) > 2 或 length(y) > 2, imagesc函數會忽略向量中除第一個和最後一個元素之外的元素的值。
Ⅲ matlab如何把imagesc處理的圖片保存
可這樣:在顯示圖片後,點工具條中的「文件」,在打開的界面中選保存或另存為,按提示就可以保存為文檔。
Ⅳ MATLAB中如何將imagesc所顯示的圖像保存
你這個圖的colormap應該是JET,你應該用的image或者imagesc顯示的圖像吧。比如你那個矩陣叫I,imshow(~I,[]);colormapgray;或者imagesc(~I);colormapgray;你試一下。
Ⅳ matlab畫圖出現一堆坐標數字,但保存figure則正常,請問怎麼回事
只能是你的顯卡的驅動可能和matlab版本不兼容的問題,現在的某些顯卡廠家是極不負責的,普通驅動都或多或少有些問題,升級一下顯卡驅動試試,或換一個matlab版本,沒別的辦法。有人也出現過類似問題,主要是有colorbar的時候產生。http://..com/question/1174554264413460699.html?oldq=1
Ⅵ 有關MATLAB和圖像處理問題
21.MATLAB支持的幾種圖像文件格式:
⑴JPEG(Joint Photogyaphic Expeyts Group):一種稱為聯合圖像專家組的圖像壓縮格式。
⑵BMP(Windows Bitmap):有1位、4位、8位、24位非壓縮圖像,8位RLE(Run length Encoded)的圖像。文件內容包括文件頭(一個BITMAP FILEHEADER數據結構)、點陣圖信息數據塊(點陣圖信息頭BITMAP INFOHEADER和一個顏色表)和圖像數據。
⑶PCX(Windows Paintbrush):可處理1位、4位、8位、16位、24位等圖像數據。文件內容包括文件頭、圖像數據和擴展色圖數據。
⑷TIFF(Tagged Iamge File Format):處理1位、4位、8位、24位非壓縮圖像,1位、4位、8位、24位packbit壓縮圖像,1位CCITT壓縮圖像等。文件內容包括文件頭、參數指針表與參數域、參數數據表和圖像數據四部分。
⑸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位光柵圖像數據集。
⑻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數據
uint8和uint16數據
二值圖像
圖像為m×n的整數矩陣,元素值范圍[0,1]
圖像為m×n的整數矩陣,元素值范圍[0,1]
索引圖像
圖像為m×n的整數矩陣,元素值范圍[0,p]
圖像為m×n的整數矩陣,元素值范圍[0,p-1]
灰度圖像
圖像為m×n的浮點數矩陣,元素值范圍[0,1]
圖像為m×n的整數矩陣,元素值范圍[0,255]或[0,65535]
RGB圖像
圖像為m×n×3的浮點數矩陣,元素值范圍[0,1]
圖像為m×n×3的整數矩陣,元素值范圍[0,255]或[0,65535]
其中,多幀圖像陣列是由多幀圖像組成的,每一幀圖像可以為前四種圖像中的一種,但組成一個多幀圖像陣列的圖像必須為同一種。cat函數可以將具有相同尺寸的幾個獨立圖像存成多幀文件。對於多幀圖像也可以從中提取單幀。
2.2.2 圖像類型判斷及轉換
1.在MATLAB中如果要判斷一個圖像文件的類型,可使用如下指令:
l isbw:若圖像為二值圖像,則返回真。
l isgray:若圖像為灰度圖像,則返回真。
l isind:若圖像為索引圖像,則返回真。
l isrgb:若圖像為RGB圖像,則返回真。
2.在MATLAB系統中,要將一個類型的圖像文件轉換成另一個類型的圖像文件,只需將前一個文件的圖像數據用imread讀出,再用imwrite以適當的格式寫到後一個圖像文件中去即可。另外,要將灰度圖像I轉換成RGB圖像,可運用cat指令。cat函數可以把一些單一的圖像合並成圖像序列。在圖像序列中每個圖像需有相同的大小,如果是索引圖像,色圖也要一致。
此外,MATLAB還提供了若干函數,用於圖像類型的轉換。這些函數有:
l dither:用抖動法(dithering)轉換圖像。該函數通過顏色抖動(顏色抖動即改變邊沿像素的顏色,使像素周圍的顏色近似於原始圖像的顏色,從而以空間解析度來換取顏色解析度)來增強輸出圖像的顏色解析度。該函數可以把RGB圖像轉換成索引圖像或把灰度圖像轉換成二值圖像。
l gray2ind:灰度圖像或二值圖像向索引圖像轉換。
l grayslice:設定閾值將灰度圖像轉換為索引圖像。
l im2bw:設定閾值將灰度、索引、RGB圖像轉換為二值圖像。
l im2double:將圖像數組轉換為double型。
l im2uint8:將圖像數組轉換為uint8型。
l im2uint16:將圖像數組轉換為uint16型。該函數不支持二值圖像序列的轉換。
l ind2gray:索引圖像向灰度圖像轉換。
l ind2rgb:索引圖像向RGB圖像轉換。
l mat2gray:將一個數據矩陣轉換為灰度圖像。
l rgb2gray:RGB圖像向灰度圖像轉換或將彩色色圖轉換成灰度色圖。
l rgb2ind:RGB圖像向索引圖像轉換。包含三種不同方法:均衡量化、最小值量化、色圖映射。
l im2java:一般圖像向Java圖像轉換。
l label2rgb:標志圖像向RGB圖像轉換。
2.2.3 圖像的查詢及讀寫
在MATLAB中要查詢一個圖像文件的信息,只要用imfinfo指令加上文件及其完整路徑名即可。函數調用格式為:
info = imfinfo(filename,fmt)
info = imfinfo(filename)
參數fmt對應於所有圖像處理工具箱中所有支持的圖像文件格式。
MATLAB提供了兩個重要的用於圖像文件的讀寫的指令,分別是從圖像文件中讀取數據的imread,以及將數據寫入到圖像文件中的imwrite。
1.imread的常見調用格式為:
A = imread(filename,fmt)
其作用是將文件名用字元串filename表示的,擴展名用fmt表示的圖像文件中的數據讀到矩陣A中。如果filename所指的為灰度級圖像,則A為一個二維矩陣;如果filename所指的為RGB圖像,則A為一個m×n×3的三維矩陣。Filename表示的文件名必須在MATLAB的搜索路徑范圍內,否則需指出其完整路徑。
imread的其他幾種重要的調用格式為:
[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)
上面一些參數的含義如下:idx是指讀取圖標(cur、ico、tiff)文件中第idx個圖像,默認值為1。』frame』,idx是指讀取gif文件中的圖像幀,idx值可以是數量、向量或』all』。ref是指整數值。alpha是指透明度。
2.imwrite的常用調用格式為:
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函數。該函數還產生了圖像對象的句柄,並允許對對象的屬性進行設置。此外,imagesc函數也具有image的功能,所不同的是imagesc函數還自動將輸入數據比例化,以全色圖的方式顯示。
imshow函數比image和imagesc更常用,它能自動設置句柄圖像的各種屬性。imshow可用於顯示各類圖像。對於每類圖像,調用方法如下:
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]):將非圖像數據顯示為圖像,這需要考慮數據是否超出了所顯示類型的最大允許范圍,其中[low high]用於定義待顯示數據的范圍。
有關圖像顯示的函數或其輔助函數,除了上述的以外,MATLAB還提供了一些用於進行圖像的特殊顯示的函數。
l colorbar:為圖像的顯示增加一個顏色條,這一用法對於了解被顯示圖像的灰度級別特別有用。
l getimage:獲取圖像數據。
l immovie:將多幀索引圖像製作成連續圖像格式。其調用格式為:
mov = immovie(D,map)
不過這種功能只對索引圖像有效,其中D為多幀索引圖像陣列,map為索引圖像的對應色階。對於其他類型圖像,則需要首先將其轉換為索引圖像。
l montage:多幀圖像的一次顯示。它能將每一幀分別顯示在一幅圖像的不同區域,所有子區的圖像都用同一個色彩條。
l movie:播放多幀連續圖像。
l subimage:在一個圖形區域內顯示多個圖像。
l truesize:調整圖像顯示的尺寸。
l warp:顯示圖像的紋理表面圖。前面提到的圖像顯示手段都只能在二維平面上顯示,MATLAB6.5的一個強大功能是能將平面圖像顯示在空間三維曲面上。這是由warp函數的紋理成圖功能來實現的,該功能能通過雙線性插值將平面圖像投影到三維曲面上。
l zoom:將圖像或二維圖形進行放大或縮小顯示。zoom本身是是一個開關鍵,zoom on用於打開縮放模式,zoom off用於關閉該模式,zoom in用於放大局部圖像,zoom out用於縮小圖像。
至於多個圖像的顯示,則可分為兩個方面:在不同的圖形窗口顯示不同的圖像,可以用figure指令來實現;在同一個圖形窗口顯示多圖,可以用subplot來實現。
第三章 圖像運算
3.1 圖像的點運算
點運算將輸入圖像映射為輸出圖像,輸出圖像每個像素點的灰度值僅由對應的輸入像素點的值決定。它常用於改變圖像的灰度范圍及分布,是圖像數字化及圖像顯示的重要工具。點運算因其作用性質,也被稱為對比度增強、對比度拉伸或灰度變換。在真正進行圖像處理之前,有時可以用點運算來克服圖像數字化設備的局限性。
點運算實際上是灰度到灰度的映射過程。點運算不會改變圖像內像素點之間的空間關系。設輸入圖像為A(x, y),輸出圖像為B(x, y),則點運算可表示為:
B(x, y) = f [A(x, y)] (3-1)
點運算可完全由灰度變換(gray-scale transformation)函數s=f (r)決定,後者描述了輸入灰度級與輸出灰度級之間的映射關系。圖像的點運算分為線性點運算和非線性點運算兩種。
3.1.1 線性點運算
線性點運算是指灰度變換函數f為線性函數時的運算。
如圖3.1,當a>1時,輸出圖像對比度增大;當a<1時,輸出圖像對比度降低;當a=1,b=0時,輸出圖像就是輸入圖像的簡單復制;當a=1,b≠0時,僅使輸出圖像的灰度值上移或下移,其效果是使整個圖像更亮或更暗。如果a為負值,暗區域將變亮,亮區域將變暗,點運算完成了圖像求補。
除了調節對比度以外,還有一種典型的線性點運算的應用就是灰度標准化。設灰度圖像為I[W][H],其中W表示圖像寬度,H表示圖像的高度,那麼灰度圖像的平均灰度和方 圖3.1 線性函數
差由如下計算公式得到:
平均灰度:
(3-2)
方差:
(3-3)
可以將其變換為具有相同均值和方差的變換函數(線性映射),其形式如下:
(3-4)
其中σ0和u 0為給定的變換參數。灰度標准化可以用來生成一些常用的平均模型。
3.1.2 非線性點運算
非線性點運算對應於非線性映射函數,典型的映射包括平方函數、對數函數、截取函數(窗口函數)、域值函數、多值量化函數等。
閾值化處理是最常用的一種非線性點運算,它的功能是選擇一閾值,將圖像二值化,然後使用生成的二進制圖像進行圖像分割及邊緣跟蹤等處理。
直方圖均衡化也是一種非常常用的非線性點運算。它是指將一個已知灰度分布的圖像使用某種非線性灰度變換函數進行計算,使運算結果變成一幅具有均勻灰度分布的新圖像。經過直方圖均衡化的點運算處理後,實際的直方圖將呈現參差不齊的外形,這是由於灰度級的可能個數是限造成的。在一些灰度級處可能沒有像素,在另外一些灰度級處則像素很擁擠。
點運算的MATLAB實現:
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);
轉載的地址忘啦。呵呵
Ⅶ matlab怎麼把500幀imagesc疊加到一張圖片上
您好, matlab可以做到像素級別的疊加, 但是500個相同點的像素值疊加後肯定沒法顯示成一個圖像, 需要有相關的演算法進行支持. 這樣的演算法需要到論文中進行確認!
Ⅷ matlab利用三列數據生成一個二維圖像,前兩個設為坐標x,y第三個數據表示圖像顏色強度
首先將三列數據放到三個列向量X,Y,Z中
X,Y就是第一、二列數據,是坐標,Z表示強度,用顏色表示
把這樣的數據圖表示成二維的圖像有兩種辦法
第一種,把不規則的散點數據插值計算到規則的二維網格,再畫圖
XI=linspace(min(X),max(X),m); %根據需要將X劃分為m分
YI=linspace(min(Y),max(Y),n); %根據需要將Y劃分為n分
ZI=griddata(X,Y,Z,XI,YI.'); %最後ZI是個nxm的矩陣
imagesc(XI,YI,ZI);colorbar; %使用imagesc將矩陣畫成圖像
這種辦法,由於數據是規則的網格,所以圖像比較漂亮
而得到的二維規則矩陣,很容易保存成圖像
但是數據是插值出來的,所以失去原來散點的信息
第二種,將散點數據用劃分為平面內多個互相連接三角形,再畫圖
tri=delaunay(X,Y); %將散點劃分為平面三角形網格
patch('Faces',tri,'Vertices',[X,Y],'FaceVertexCData',Z,...
'FaceColor','interp','EdgeColor','none');
colorbar;
這種辦法得到的圖像完全保留散點的信息
還可以將最後的邊顏色設置為黑色'EdgeColor','k'
這是顯示三角形網格的劃分
在原來散點的位置,X,Y,Z都是一一對應的
所以坐標點生成的像素點與顏色與坐標點含量值肯定一一對應
而其它地方的顏色是由這些值插值而得
這樣圖像邊緣可能不規則