1. 程式人生 > >MATLAB中用imshow()顯示影象與影象的資料型別的關係

MATLAB中用imshow()顯示影象與影象的資料型別的關係

     文章出處:http://www.ilovematlab.cn/thread-100044-1-1.html

     (此為本人從CSDN上轉載,因前半部分解決了偶的問題,故覺得有些價值,特此奉上。)
        在matlab中,我們常使用imshow()函式來顯示影象,而此時的影象矩陣可能經過了某種運算。在matlab中,為了保證精度,經過了運算的影象矩陣A其資料型別會從unit8型變成double型。如果直接執行imshow(A),我們會發現顯示的是一個白色的影象。這是因為imshow()顯示影象時對double型是認為在0~1範圍內,即大於1時都是顯示為白色,而imshow顯示uint8型時是0~255範圍。而經過運算的範圍在0-255之間的double型資料就被不正常得顯示為白色影象了。


       那麼如何解決這個問題呢?筆者曾經用fix()函式把影象矩陣由實數形式轉化成整數形式,但這樣仍無法改變影象矩陣是double型的事實。通過搜尋,找到兩個解決方法:
         imshow(I/256); -----------將影象矩陣轉化到0-1之間
         imshow(I,[]);       -----------自動調整資料的範圍以便於顯示 (不明白原理!) 
         從實驗結果看兩種方法都解決了問題,但是從顯示的影象看,第二種方法顯示的影象明暗黑白對比的強烈些!不知什麼原理!         此外還找到一些方法,還沒有試過,記錄如下: 
        uint8和im2uint8的區別 
        影象資料在計算前需要轉換為double,以保證精度; 

       很多矩陣資料也都是double的,要想顯示,必須先轉換為影象的標準資料格式。
       如果轉換前的資料符合影象資料標準(比如如果是double則要位於0~1之間),那麼可以直接使用im2uint8;如果轉換前的資料分佈不合規律,則使用uint8,將其自動切割至0~255(超過255的按255)
        最好使用mat2gray,將一個矩陣轉化為灰度影象的資料格式(double) 
       另外,可以用isgray判斷矩陣是否是一個影象資料矩陣。

相關推薦

MATLAB中用imshow()顯示影象影象資料型別關係

     文章出處:http://www.ilovematlab.cn/thread-100044-1-1.html      (此為本人從CSDN上轉載,因前半部分解決了偶的問題,故覺得有些價值,特此奉上。)        在matlab中,我們常使用imshow()

matlab中用imshow()顯示影象影象矩陣的資料型別關係

       在matlab中,我們常使用imshow()函式來顯示影象,而此時的影象矩陣可能經過了某種運算。在matlab中,為了保證精度,經過了運算的影象矩陣I其資料型別會從unit8型變成double型。如果直接執行imshow(I),我們會發現顯示的是一個白色的影象。

matlab中用imshow()顯示double型別影象中出現的問題

在matlab中,我們常使用imshow()函式來顯示影象,而此時的影象矩陣可能經過了某種運算。在matlab中,為了保證精度,經過了運算的影象矩陣I其資料型別會從unit8型變成double型。如果

matlab ( octave ) imshow顯示影象詳解

最近在用octave (類似於matlab的計算軟體, 函式和matlab一致) 寫程式的時候, 在顯示影象和儲存影象的時候遇到了一些小問題, 所以簡單的總結了一下。 本文用的影象為灰度影象: imread() 返回的影象型別是uint8型別, 這時用imshow顯示

Matlab的MFC——matlab上GUI的設計影象去模糊系統

       研究影象去模糊的演算法也有一段時間了,從最開始對賈佳亞08年的一篇文章演算法的研究到現在,也模擬對比了不少演算法。不知道大牛們會怎麼看,但是對於我這樣剛剛走到門檻的人來說,這行的水很深。

在QT中用QLabel顯示一張影象及QImage/QPixmap/QBitmap/QPicture

       在QT中顯示影象,是使用OpenCV聯合QT進行機器視覺專案的開發的第一步。首先需要弄清楚的是QT的四個影象類QImage/QPixmap/QBitmap/QPicture。      

MATLAB 不同顏色空間的影象儲存的資料型別

TEST=imread('test.jpg'); img=im2double(imresize(TEST,0.5)); imgRGB = uint8(255.*img); >> TES

Matlab中同時顯示多幅影象的例子

% Demo for display 4 images in one figure window ;% by SimonYUMing , Apr. , 5,2010% Read two images from the current directory ,for exampl

MATLABimshow()顯示問題

MATLAB中imread(img),讀取儲存的資料是unit8型別的,如果需要運算,最好轉換成double型,直接im2double(img)就可以,然後這樣處理的資料全是[0,1]之間的。 當然i

android影象影象處理系列(一、Bitmap和BitmapFactory)

1、Drawable物件   Android應用添加了Drawabe資源之後,Android SDK會為這份資原始檔在R清單檔案中建立一個索引項:R.drawable.file_name,接著我們可以在xml資原始檔中通過@drawable/file_name來訪問該draw

C#|RBG影象轉灰度影象影象灰度反轉

我們將RBG影象轉灰度影象的方法寫成一個函式的形式,輸入為Bitmap格式的影象和影象的長和寬,輸出為byte型的陣列。 根據YUV的顏色空間中,Y的分量的物理意義是點的亮點,由該值反映亮點等級,根據RBG和YUV顏色控制元件的變換關係可建立亮度Y與R、G、B

包裝類(Integer/Boolean等、字串基本資料型別轉化,-127-128自動裝箱入池)

為什麼要有包裝類? Object類可以接收所有引用資料型別。然而在Java中,資料型別分為基本資料型別和引用資料型別,那麼基本資料型別如何處理呢? 使用包裝類 :包裝類是將基本資料型別封裝到類中,因為Object無法接受基本資料型別,封裝成類後就可以用Object類來接收。 簡單定義一個in

4.Java_關鍵字this、super、static、final(終結器)基本資料型別轉換

一、關鍵字this 1.表示呼叫本類屬性:在類中訪問類的屬性,一定要加上this關鍵字。 2.表示呼叫本類方法:         (1)呼叫普通方法:this.方法名(引數);   當有類的繼承關係時,表示本類方法一定要加上th

基礎 | 基本資料型別引用資料型別

Java資料型別應該算是最基礎的了,面試時問到的也不是特別多,在此也僅做一個簡單的梳理,大家簡單瀏覽即可。 建議重點關注Java中 「基本資料型別轉換」 的相關問題。 Java有哪些基本資料型別? Java中的基本資料型別只有8個:byte(1位元組)、short(2位

Python學習(2)—— 運算子基本資料型別

運算子與基本資料型別 運算子有以下五種: 算數運算: 比較運算: 邏輯運算: 賦值運算: 成員運算: 以上圖片轉載來自:http://www.cnblogs.com/wupeiqi/ 。 基本資料型別認識 數字 (in

C/C++ 指標小結——指標其它資料型別(陣列、字串、函式、結構體)的關係

一、指標與陣列和字串 1、指標與陣列 當宣告數時,編譯器在連續的記憶體空間分配基本地址和足夠的儲存空間,以容納陣列的所有元素。基本地址是陣列第一個元素(索引為0)的儲存位置。編譯器還把陣列名定義為指向第一個元素的常量指標。 元素的地址是通過索引和資料型別的比例因子來計算的;例如: x[3

Java中包裝型別基本資料型別的異同

基本資料型別: Java語言提供了八種基本型別: 六種數字型別(四個整數型,兩個浮點型),一種字元型別,還有一種布林型。 1、整數: 包括int,short,byte,long , 初始值為0 2、浮點型: float,double , 初始值為0.0 3、字

java 反射中的包裝類基本資料型別

寫了個執行反射方法的函式,但是卻老出問題,搗鼓了下,原來是基本資料型別出了問題, 呼叫反射中的方法時,需要知道方法的引數型別, Method getDeclaredMethod(String name, Class<?>... parameterTypes) 但是因為引數是可

JAVA基本資料型別引用資料型別(JAVA基礎複習一)

一、基本資料型別: byte:Java中最小的資料型別,在記憶體中佔8位(bit),即1個位元組,取值範圍-128~127,預設值0 short:短整型,在記憶體中佔16位,即2個位元組,取值範圍-32768~32717,預設值0 int:整型,用於儲存整數,在內在中佔

Python的變數基本資料型別

·變數(variable)  變數本質上是一個佔位符,變數可以用來儲存整數、字串、列表等。簡單的可以理解為一個座位,可以坐老人也可以坐小孩,可以坐男孩,也可以坐女孩。 @ 變數的命名規則: 變數名只能包含字母、數字、下劃線:    如:my_car,fly_air  變數不能包含空格、不能以數字打頭: