MATLAB——圖像處理常用函數

2021-12-28 ZAFU裡的空間信息技術社團

由於數字圖像可以被看作為一個矩陣,因此可以用MATLAB來進行圖像處理。本章簡單介紹了幾個常用到的圖像處理函數。

1.讀取影像  imread()

clear all;clc;img1=imread('xyy.png');

以讀取一張名為「xxy.png」的喜羊羊圖片為例,可以看到MATLAB在將圖像讀取後以矩陣的形式進行了存儲。 

2.顯示圖像  imshow()

clear all;clc;img1=imread('xyy.png');imshow(img1);

 結果為圖像在一個figure中顯示。

3.影像灰度直方圖  imhist()

clear all;clc;img1=imread('jinx.jpg');subplot(1,2,1);imshow(img1);subplot(1,2,2);imhist(img1);

 使用「jinx.jpg」做演示,代碼中的subplot()為在figure中各個分塊位置創建坐標區。如(1,2,1)就是1*2這兩個分塊中的第一個。

結果如下:

 4.直方圖均衡化  histeq()

直方圖均衡化(histogram equalization)是使變換後圖像灰度值的概率密度為均勻分布的映射變換方法、通過直方圖均衡化處理,圖像對比圖得到了提高。

計算公式為:頻率映射=映射後的灰度級*原圖像的累積頻數/原圖像的像素數=映射後的灰度級*原圖像的頻率

clear all;clc;img1=imread('jinx.jpg');subplot(2,2,1);imshow(img1);subplot(2,2,2);imhist(img1);img2=histeq(img1);subplot(2,2,3);imshow(img2);subplot(2,2,4);imhist(img2);

 結果如下:

 5.空間濾波 imfilter()

使用卷積運算對圖像進行濾波。

 例子中使用拉普拉斯算子對喜羊羊圖片進行濾波操作,代碼如下(前面的直方圖均衡忘刪了,請不要介意):

clear all;clc;img1=imread('xyy.png');subplot(2,2,1);imshow(img1);subplot(2,2,2);imhist(img1);img2=histeq(img1);lapl=[0 1 0;1 -4 1;0 1 0];img2=imfilter(img1,lapl);subplot(2,2,3);imshow(img2);subplot(2,2,4);imhist(img2);

 結果如圖:

 

6.二值化分割閾值(threshold)函數  graythresh()

此函數使用最大類間方差法求得閾值,代碼如下:

clear all;clc;img1=imread('xyy.png');subplot(1,2,1);imshow(img1);level=graythresh(img1);subplot(1,2,2);imhist(img1);

此時的閾值為:0.6118,該數值為歸一化後的值,範圍是0~1。

7.影像轉二值圖 im2bw()

一般使用上述的閾值即可實現該操作,代碼如下:

clear all;clc;img1=imread('xyy.png');subplot(1,2,1);imshow(img1);level=graythresh(img1);img2=im2bw(img1,level);subplot(1,2,2);imshow(img2);

效果如下圖:

 

8.開運算 imopen()

使用同一個結構元素對圖像先腐蝕後膨脹的運算稱為開運算(open),又稱開啟。它具有消除圖像中小於結構元素的細小目標、在纖細點處分離目標、平滑較大目標的邊界而且不明顯改變其面積的作用。

 代碼如下:

clear all;clc;img1=imread('jinx.jpg');subplot(1,2,1);imshow(img1);img2=imopen(img1,strel('disk',5));img3=imsubtract(img1,img2);subplot(1,2,2);imshow(img3);

 我們可以用它來提取背景,再使用imsubtract()函數減去此背景圖像。(例子中的圖片不太明顯...)

 

更多內容大家可以前往MATLAB官方幫助文檔查看。

參考文獻:

https://ww2.mathworks.cn/support.html

韋玉春,湯國安,汪閩,楊昕等《遙感數字圖像處理教程》(第三版)

相關焦點

  • 【matlab圖像處理】圖像處理工具箱(2)
    今天介紹圖像處理工具箱的基本圖像操作。本內容參考自《實用MATLAB圖像和視頻處理》第4章。對於matlab的安裝,可以參考以下文章:讀取圖片是最基本的操作,matlab中內置的函數為imread(),它可以讀取常見的圖像格式,如TIFF、JPEG、BMP、GIF、PNG等,如下。
  • 【matlab圖像處理】圖像處理工具箱(1)
    今天介紹圖像處理工具箱概述。本內容參考自《實用MATLAB圖像和視頻處理》第4章以及博客:https://blog.csdn.net/qq_42722197/article/details/118005631對於matlab的安裝,可以參考以下文章:圖像處理工具箱(Image Processing T
  • matlab處理圖像代碼
    2、灰度直方圖及直方圖均衡化灰度直方圖用於顯示圖像的灰度值分布情況,是數字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪製直方圖的函數imhist()。用它可以很簡單的繪製出一幅圖像的灰度直方圖(見例2)。
  • MATLAB中圖像處理的一些簡單函數
    2.MATLAB中圖像文件的顯示 imshow imshow函數是最常用的顯示各種圖像的函數,其語法如下: imshow(X,map)其中X是圖像數據矩陣,map是其對應的顏色矩陣,若進行圖像處理後不知道圖像數據的值域可以用[]代替map。
  • 【matlab圖像處理】圖像處理的其他算術運算
    今天介紹圖像處理的其他算術運算,包括減法運算、乘法運算、除法運算。本內容參考自《實用MATLAB圖像和視頻處理》第6章。對於matlab的安裝,可以參考以下文章:關於圖像的算術運算,其實就是逐像素進行處理,即在圖像中運算是獨立作用於各個像素的。這裡的運算操作可以是二值操作符,如常見的「加減乘除」。
  • MATLAB圖像處理常用函數大全
    ') K=medfilt2(J);%使用3*3的鄰域窗的中值濾波 subplot(122),imshow(K);title('中值濾波後圖像') Matlab數字數字圖像處理函數匯總: 1、數字數字圖像的變換 ① fft2:fft2函數用於數字數字圖像的二維傅立葉變換,如:i=imread('104
  • 大神帶你玩轉matlab圖像處理(五)
    A:原圖像,B:結果圖將真彩色圖像B轉換為灰度圖像A。rgb2gray函數通過消除色調和飽和度信息,同時保留亮度,來將B圖像轉換為灰度圖。imbinarize使用256-bin圖像直方圖來計算Otsu的閾值。要使用其他直方圖,請參見otsuthresh。B=imbinarize(A,method)使用方法「 global」或「 adaptive」指定的閾值處理方法從圖像A創建二進位圖像。B=imbinarize(A,T)使用閾值T從圖像A創建二進位圖像。
  • MATLAB的ezplot函數繪製隱函數圖像
    也就是說,使用plot 函數之前,必須首先定義好曲線上每一點的x 及y 坐標,常用格式為:(1)plot(x) 當x 為一向量時,以x 元素的值為縱坐標,x的序號為橫坐標值繪製曲線。當x 為一實矩陣時,則以其序號為橫坐標,按列繪製每列元素值相對於其序號的曲線,當x 為m× n 矩陣時,就有n 條曲線。
  • MATLAB中內置了哪些函數是本科生常用的?
    6 人贊同matlab用的比較多,但是水平比較渣,寫出來的代碼基本都是小白level的,也就是以能算通為目的,很少做語言和算法上的優化(因為目前處理過的東西都是數據量和計算量不大的東西,沒需求就沒動力做優化=。=)所以估計一些經驗比較適合題主這種同樣初入門的人。首先,matlab下寫代碼,牢記關鍵詞 矩陣運算。
  • 大神帶你玩轉matlab圖像處理(6)——Hough變換
    近段時間過冷水開始接觸一點點圖像處理的知識三維空間分布函數繪製實例推文就有關於讀取圖像上的數據程序處理。
  • Matlab|繪製函數圖像
    一、繪製圖像的常用思路在通常情況下,手動繪製函數圖像的基本思路是確定自變量的取值範圍、選取合適的自變量點、通過函數表達式得出對應的應變量的點、將這些點連接起來,即可得到大致圖像。使用Matlab繪製函數圖像也是使用這樣的思路,當自變量的點取得夠多時,連接這些點的圖形就越接近函數圖像。
  • Matlab生成Lagrange插值函數圖像遇到的問題及解決方法
    插值函數,並生成該插值函數的圖像。代碼可以看著書本直接敲,主要是圖像的生成遇到了問題。如果直接使用plot()函數的話會出現以下提示:       「錯誤使用 plot數據必須為可轉換為雙精度值的數值、日期時間、持續時間或數組。」
  • Matlab 圖像處理相關函數命令
    imresize  改變圖像大小語法:B=imresize(A,m,method)imrotate  旋轉圖像語法:B=imrotate(A,angle,method) \ B=imrotate(A,angle,method,'crop') 三、像素和統計處理函數corr2
  • MATLAB 與複數處理相關的函數
    matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃
  • Matlab 圖像處理相關函數命令大全
    imresize  改變圖像大小語法:B=imresize(A,m,method)imrotate  旋轉圖像語法:B=imrotate(A,angle,method) \ B=imrotate(A,angle,method,'crop') 三、像素和統計處理函數corr2
  • 一文了解Matlab如何製作動態圖像
    首先,以之前介紹過的心形圖為例,來說明在matlab中如何將繪圖過程保存為gif動態圖像。1.gif文件,在matlab可以使用imwrite將圖像保存為gif,但需要將圖像數據保存為索引圖像。,frame2im函數將當前圖形保存為rgb圖像,rgb2ind函數將rgb圖像保存為索引圖像。
  • 小波變換MATLAB圖像融合
    圖像融合可以克服單一圖像在幾何、光譜、和空間解析度等方面存在的局限性。而小波變換具有的正交性、非冗餘性以及完善的重構能力,有效彌補金字塔方法分解時的信息冗餘性以及重構過程中的不穩定性。小波變換的基本原理是繼承和發展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的「時間-頻率」窗口,是進行信號時頻分析和處理的理想工具。
  • 【matlab圖像處理】圖像處理的經典操作
    今天介紹圖像處理的經典操作。本內容參考自《實用MATLAB圖像和視頻處理》第一章。對於matlab的安裝,可以參考以下文章:今天,幾乎不存在與數字圖像處理無關的技術領域。數字圖像處理應用領域非常廣泛,包括:醫學上的核磁共振成像、工業上的缺陷檢測、軍事上的無人機識別、安防上的智能監控、手機上的自拍美圖,更別說網際網路上每時每秒上傳的照片和短視頻等等。
  • 值得收藏 | 如何用matlab做出酷炫的圖像
    1、基礎知識1.1 二維圖形繪製plot函數是Matlab繪製二維圖形的常用函數,該函數將數組中的數據點繪連起來構成一條連續的曲線。1.2 三維圖形繪製plot3函數是Matlab繪製三維曲線的常用函數。
  • MATLAB的compass函數繪製羅盤圖
    在matlab中使用compass()函數來繪製羅盤圖。語法:羅盤圖顯示包含分量 (U,V) 的向量,就像箭頭從原點射出一樣。U、V 和 Z 位於笛卡爾坐標中,繪製於一個環狀網格上。compass(U,V) 顯示具有 n 個箭頭的羅盤圖,其中 n 是 U 或 V 中的元素數目。每個箭頭的基點的位置為原點。