1樓:長鹿
顯示成result的結果可能是你沒有變換,需要對三個分量進行分類,要對彩色影象進行變換,result=a或者多進行幾次迴圈,直到分別得到r、g、b,出現了灰度影象不要著急,因為你的彩色資訊沒有了,進行一次彩色轉換就好了。下面是具體步驟:
第一步:a=imread('d:\ebook\lena.bmp');
第二步: r=a(:,:,1);
第三步:g=a(:,:,2);
第四步:b=a(:,:,3);
第五步: result(:,:,1)=r;
第六步: result(:,:,2)=g;
第七步: result(:,:,3)=b;
figure,imshow(a);
figure,imshow(result);
彩色影象在處理時如果你轉化為了灰度影象後,最後的結果是顯示不了彩色的,因為在轉化時丟失了彩色資訊。
如果你對彩色影象變換,那就把它的三個分量都分出來,依次進行操作,最後在合成彩色影象就行了。
下面是完成好了的複製彩色影象。
2樓:高中生
兩個解決方法:
imshow(i/256); ----------將影象矩陣轉化到0-1之間
imshow(i,); -----------自動調整資料的範圍以便於顯示 (不明白原理!)
ps:imshow(i,),將i的最小值看作0,最大值看作255,所以黑白明顯
從實驗結果看兩種方法都解決了問題,但是從顯示的影象看,第二種方法顯示的影象明暗黑白對比的強烈些!不知什麼原理!
此外還找到一些方法,還沒有試過,記錄如下:
uint8和im2uint8的區別
影象資料在計算前需要轉換為double,以保證精度; 很多矩陣資料也都是double的,要想顯示其,必須先轉換為影象的標準資料格式. 如果轉換前的資料符合影象資料標準(比如如果是double則要位於0~1之間),那麼可以直接使用im2uint8
如果轉換前的資料分佈不合規律,則使用uint8,將其自動切割至0~255(超過255的按255) 最好使用mat2gray,將一個矩陣轉化為灰度影象的資料格式(double)
另外,可以用isgray判斷矩陣是否是一個影象資料矩陣
總之,im2uint8、im2double要跟uint8、double
3樓:酷呆愛死呆
a=imread('d:\ebook\lena.bmp');
r=a(:,:,1);
g=a(:,:,2);
b=a(:,:,3);
result(:,:,1)=r;
result(:,:,2)=g;
result(:,:,3)=b;
figure,imshow(a);
figure,imshow(result);
彩色影象在處理時如果你轉化為了灰度影象後,最後的結果是顯示不了彩色的,因為在轉化時丟失了彩色資訊。
如果你對彩色影象變換,那就把它的三個分量都分出來,依次進行操作,最後在合成彩色影象就行了。
上面就是根據你的意思寫出的複製彩色影象。
4樓:傅映陽
是資料格式的問題,imshowx函式只能顯示uint8等資料格式的影象,你的result的資料格式很可能是double的,你要轉換一下資料格式 uint8(result)再顯示。
5樓:匿名使用者
如果你是複製,不知道你為啥搞的這麼麻煩,直接result=a不就完了
6樓:嵐之風飛
png影象可不是簡單的二維矩陣啊,最起碼也有三維啊,具體幾維你還是自己用命令看一下吧,恩。
matlab中影象顯示函式
7樓:
1、雙擊matlab軟體圖示,開啟matlab軟體,可以看到matlab軟體的介面。
2、使用「-1.56:0.
01:1.56;」建立一維陣列,表示從-1.
56到1.56,每隔0.01會取一個數字。
這個一維陣列用來作為正割函式點的橫座標。
3、建立兩個函式,分別是y1=1./cos(x);y2=2./cos(x)。注意此處使用的是點除。
4、使用函式plot(x,y1,x,y2)在一張圖中繪製這兩個正割函式的影象,如果要繪製其中一個,可以使用函式plot(x,y1)或plot(x,y2)進行繪製。
5、使用函式title()給正割函式影象新增標題,使用函式xlabel()、ylabel()給正割函式影象新增座標軸名稱。
6、使用語句grid on;給正割函式影象新增座標分割線,也成為網格線。
7、檢視繪製的兩個個函式曲線的影象,注意檢視它的標題、座標軸、網格分割線;注意當x=0時,這兩條函式曲線都位於最低點。
8樓:摯愛和你共亨
inshow主要用於呼叫影象索引,比如:
imshow(x,map)
其功能等同於:
image(x)
colormap(map)
但是,inshow的功能要強大一些,比如用於灰度影象,rgb影象,二進位制影象,都可以應用。
imagesc屬於影象縮放函式
具體說一些例子:
要顯示一副灰度影象,可以呼叫函式 imshow 或 imagesc (即
imagescale,影象縮放函式)
(1) imshow 函式顯示灰度影象
使用 imshow(i) 或 使用明確指定的灰度級書目:imshow(i,32)
由於matlab自動對灰度影象進行標度以適合調色盤的範圍,因而可以使用自定義
大小的調色盤。其呼叫格式如下:
imshow(i,[low,high])
其中,low 和 high 分別為資料陣列的最小值和最大值。
(2) imagesc 函式顯示灰度影象
下面的**是具有兩個輸入引數的 imagesc 函式顯示一副灰度影象
imagesc(1,[0,1]);
colormap(gray);
imagesc 函式中的第二個引數確定灰度範圍。灰度範圍中的第一個值(通常是0),
對應於顏色映象表中的第一個值(顏色),第二個值(通常是1)則對應與顏色映象表
中的最後一個值(顏色)。灰度範圍中間的值則線型對應與顏色映象表中剩餘的值(顏色)。
在呼叫 imagesc 函式時,若只使用一個引數,可以用任意灰度範圍顯示影象。在該
呼叫方式下,資料矩陣中的最小值對應於顏色映象表中的第一個顏色值,資料矩陣中的最大
值對應於顏色映象表中的最後一個顏色值。
5.3 rgb 影象及其顯示
(1) image(rgb)
不管rgb影象的型別是double浮點型,還是 uint8 或 uint16 無符號整數型,matlab都
能通過 image 函式將其正確顯示出來。
rgb8 = uint8(round(rgb64×255)); % 將 double 浮點型轉換為 uint8 無符號整型
rgb64 = double(rgb8)/255; % 將 uint8 無符號整型轉換為 double 浮點型
rgb16 = uint16(round(rgb64×65535)); % 將 double 浮點型轉換為 uint16 無符號整型
rgb64 = double(rgb16)/65535; % 將 uint16 無符號整型轉換為 double 浮點型
(2) imshow(rgb) 引數是一個 m×n×3 的陣列
5.4 二進位制影象及其顯示
(1) imshow(bw)
在 matlab 7.0 中,二進位制影象是一個邏輯類,僅包括 0 和 1 兩個數值。畫素 0 顯示
為黑色,畫素 1 顯示為白色。
顯示時,也可通過not(~)命令,對二進位制圖象進行取反,使數值 0 顯示為白色;1 顯示
為黑色。
例如: imshow(~bw)
(2) 此外,還可以使用一個調色盤顯示一副二進位制影象。如果圖形是 uint8 資料型別,
則數值 0 顯示為調色盤的第一個顏色,數值 1 顯示為第二個顏色。
例如: imshow(bw,[1 0 0;0 0 1])
9樓:匿名使用者
inshow主要用於呼叫影象索引,比如:
imshow(x,map)
其功能等同於:
image(x)
colormap(map)
但是,inshow的功能要強大一些,比如用於灰度影象,rgb影象,二進位制影象,都可以應用。
imagesc屬於影象縮放函式
具體說一些例子:
要顯示一副灰度影象,可以呼叫函式 imshow 或 imagesc (即
imagescale,影象縮放函式)
(1) imshow 函式顯示灰度影象
使用 imshow(i) 或 使用明確指定的灰度級書目:imshow(i,32)
由於matlab自動對灰度影象進行標度以適合調色盤的範圍,因而可以使用自定義
大小的調色盤。其呼叫格式如下:
imshow(i,[low,high])
其中,low 和 high 分別為資料陣列的最小值和最大值。
(2) imagesc 函式顯示灰度影象
下面的**是具有兩個輸入引數的 imagesc 函式顯示一副灰度影象
imagesc(1,[0,1]);
colormap(gray);
imagesc 函式中的第二個引數確定灰度範圍。灰度範圍中的第一個值(通常是0),
對應於顏色映象表中的第一個值(顏色),第二個值(通常是1)則對應與顏色映象表
中的最後一個值(顏色)。灰度範圍中間的值則線型對應與顏色映象表中剩餘的值(顏色)。
在呼叫 imagesc 函式時,若只使用一個引數,可以用任意灰度範圍顯示影象。在該
呼叫方式下,資料矩陣中的最小值對應於顏色映象表中的第一個顏色值,資料矩陣中的最大
值對應於顏色映象表中的最後一個顏色值。
5.3 rgb 影象及其顯示
(1) image(rgb)
不管rgb影象的型別是double浮點型,還是 uint8 或 uint16 無符號整數型,matlab都
能通過 image 函式將其正確顯示出來。
rgb8 = uint8(round(rgb64×255)); % 將 double 浮點型轉換為 uint8 無符號整型
rgb64 = double(rgb8)/255; % 將 uint8 無符號整型轉換為 double 浮點型
rgb16 = uint16(round(rgb64×65535)); % 將 double 浮點型轉換為 uint16 無符號整型
rgb64 = double(rgb16)/65535; % 將 uint16 無符號整型轉換為 double 浮點型
(2) imshow(rgb) 引數是一個 m×n×3 的陣列
5.4 二進位制影象及其顯示
(1) imshow(bw)
在 matlab 7.0 中,二進位制影象是一個邏輯類,僅包括 0 和 1 兩個數值。畫素 0 顯示
為黑色,畫素 1 顯示為白色。
顯示時,也可通過not(~)命令,對二進位制圖象進行取反,使數值 0 顯示為白色;1 顯示
為黑色。
例如: imshow(~bw)
(2) 此外,還可以使用一個調色盤顯示一副二進位制影象。如果圖形是 uint8 資料型別,
則數值 0 顯示為調色盤的第一個顏色,數值 1 顯示為第二個顏色。
例如: imshow(bw,[1 0 0;0 0 1])
matlab灰度圖用三維影象顯示問題
i imread e matlab image brain.bmp p1 rgb2gray i rgb 轉為灰度圖 y,x size p1 取出影象大小 x,y meshgrid 1 x,1 y 生成網格座標 pp double p1 uint8 轉換為 double mesh x,y,pp 畫圖 ...
求用MATLAB顯示灰度影象的直方圖的操作詳細步驟,小白求
1 開啟matlab需要處理的影象,然後再下面寫出 是 pic i,j 255 u v sum c int img i,j 2 然後接下來就可以看到影象均衡化的 3 最後,畫出均衡化 的直方圖如圖所示,衡化前後,對比一下,這樣就可以解決問題了。怎麼用matlab顯示一張 和它的灰度直方圖!本人絕對小...
用matlab作圖,影象老是錯
我剛開始也得出了showtime 97所畫影象,總覺得不對勁,如下。為了找到不對勁地方,我發現了有趣現象 假如 t 1979 2500 x exp 2 0.0599 t 1979 plot t,x 結果如下 當我除以個xm趨勢就完全變了 t 1979 2500 x exp 2 0.0599 t 19...