用matlab顯示影象的問題,matlab中影象顯示函式

2021-12-19 16:08:05 字數 5784 閱讀 9733

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...