當前位置:菜譜大全網 - 食譜 - 查找MATLAB代碼

查找MATLAB代碼

MATLAB實用源代碼

1圖像的讀取和旋轉

a = imread(');%讀取圖像

支線劇情(2,2,1),im show (a),標題('原圖');%輸出圖像

I = RGB 2 gray(A);

Subplot(2,2,2),imshow(A),title('灰度圖像');

Subplot(2,2,3),imhist(I),title('灰度圖像直方圖');%輸出原始直方圖

θ= 30°;J = imrotate(I,theta);%試著改變角度θ。

子情節(2,2,4),即時消息顯示(j),標題(“旋轉圖像”)

2邊緣檢測

I=imread('C:\Users\HP\Desktop\平常總結\ luffy . jpg ');

支線劇情(2,2,1),im show (I),標題('原圖');

I1=edge(I,' Sobel ');

Subplot (2,2,2),im show (i1),title ('Sobel邊緣檢測');

I2=edge(I,' prewitt ');

子情節(2,2,3),im show (I2),title ('prewitt邊緣檢測');

I3=edge(I,' log ');

子情節(2,2,4),im show (i3),title(' log edge detection ');

3圖像倒置

MATLAB程序實現如下:

I = im read(' xian . BMP ');

j = double(I);

J =-J+(256-1);%圖像反轉線性變換

h = uint 8(J);

支線劇情(1,2,1),imshow(I);

支線劇情(1,2,2),im show(H);

4.灰色線性變換

MATLAB程序實現如下:

I = im read(' xian . BMP ');

支線劇情(2,2,1),imshow(I);

標題(“原圖”);

axis();

軸打開;%顯示坐標系

I 1 = RGB 2 gray(I);

支線劇情(2,2,2),imshow(I 1);

標題(“灰度圖像”);

axis();

軸打開;%顯示坐標系

J=imadjust(I1,[0.1 0.5],[]);%局部拉伸,拉伸灰度在[0.1.5]到[0.1]之間

支線劇情(2,2,3),im show(J);

標題('線性變換圖像[0.1.5]');

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

K=imadjust(I1,[0.3 0.7],[]);%局部拉伸,拉伸灰度在[0.3-0.7]到[0.1]之間

支線劇情(2,2,4),im show(K);

標題('線性變換圖像[0.3 0.7]');

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

5.非直線轉換

MATLAB程序實現如下:

I = im read(' xian . BMP ');

I 1 = RGB 2 gray(I);

支線劇情(1,2,1),imshow(I 1);

標題(“灰度圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

j = double(I 1);

J = 40 *(log(J+1));

h = uint 8(J);

支線劇情(1,2,2),im show(H);

標題(“對數變換圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

4.直方圖均衡

MATLAB程序實現如下:

I = im read(' xian . BMP ');

I = RGB 2 gray(I);

圖;

支線劇情(2,2,1);

imshow(壹);

支線劇情(2,2,2);

imhist(壹);

I 1 = histeq(I);

圖;

支線劇情(2,2,1);

imshow(I 1);

支線劇情(2,2,2);

imhist(I 1);

5.線性平滑濾波器

用MATLAB實現區域平均法壓制噪聲的程序;

I = im read(' xian . BMP ');

支線劇情(231)

imshow(壹)

標題(“原始圖像”)

I = RGB 2 gray(I);

I1=imnoise(I,' salt & amp辣椒',0.02);

支線劇情(232)

imshow(I1)

標題(“帶有椒鹽噪聲的圖像”)

k 1 = filter 2(f special(' average ',3),I 1)/255;% 3*3模板平滑過濾。

k2=filter2(fspecial('average ',5),I 1)/255;% for 5*5模板平滑濾波k3 = filter2 (fspecial ('average ',7),I 1)/255;% 7*7模板平滑過濾。

k4=filter2(fspecial('average ',9),I 1)/255;% 9*9模板平滑過濾。

支線劇情(233),imshow(k 1);標題(' 3*3模板平滑過濾');

支線劇情(234),im show(k2);標題(' 5*5模板平滑過濾');

支線劇情(235),im show(k3);標題(' 7*7模板平滑過濾');

支線劇情(236),im show(k4);標題(' 9*9模板平滑過濾');

6.中值濾波器

用MATLAB實現中值濾波的程序如下:

I = im read(' xian . BMP ');

I = RGB 2 gray(I);

J=imnoise(I,'鹽& amp辣椒',0.02);

支線劇情(231),imshow(I);標題(“原圖”);

支線劇情(232),imshow(J);標題('添加椒鹽噪聲圖像');

k 1 = medfilt 2(J);% 3*3模板中值濾波。

k2=medfilt2(J,);%進行5*5模板中值濾波。

k3=medfilt2(J,);% 7*7模板中值濾波。

k4=medfilt2(J,);% 9*9模板中值濾波。

支線劇情(233),imshow(k 1);標題(' 3*3模板中值濾波');

支線劇情(234),im show(k2);標題(' 5*5模板中值濾波');

支線劇情(235),im show(k3);標題(' 7*7模板中值濾波');

支線劇情(236),im show(k4);標題(' 9*9模板中值濾波');

7.使用Sobel算子和拉普拉斯算子銳化圖像:

I = im read(' xian . BMP ');

支線劇情(2,2,1),imshow(I);

標題(“原圖”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I 1 = im2bw(I);

支線劇情(2,2,2),imshow(I 1);

標題(“二進制圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

h = f special(' Sobel ');%選擇sobel運算符

J=filter2(H,I 1);%卷積運算

支線劇情(2,2,3),im show(J);

標題(“sobel算子銳化圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

h=[0 1 0,1 -4 1,0 1 0];%拉普拉斯算子

J1=conv2(I1,h,'相同');%卷積運算

支線劇情(2,2,4),imshow(j 1);

標題('拉普拉斯算子銳化圖像');

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

8.梯度算子邊緣檢測

MATLAB用於實現以下功能:

I = im read(' xian . BMP ');

支線劇情(2,3,1);

imshow(壹);

標題(“原圖”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I 1 = im2bw(I);

支線劇情(2,3,2);

imshow(I 1);

標題(“二進制圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I2=edge(I1,' Roberts ');

圖;

支線劇情(2,3,3);

imshow(I2);

標題(“roberts算子分割結果”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I3=edge(I1,' Sobel ');

支線劇情(2,3,4);

im show(I3);

標題(' sobel算子分割結果');

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I4=edge(I1,' Prewitt ');

支線劇情(2,3,5);

im show(I4);

標題(“Prewitt算子分割結果”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

9.檢測邊緣的對數算子

MATLAB程序用於實現以下功能:

I = im read(' xian . BMP ');

支線劇情(2,2,1);

imshow(壹);

標題(“原圖”);

I 1 = RGB 2 gray(I);

支線劇情(2,2,2);

imshow(I 1);

標題(“灰度圖像”);

I2=edge(I1,' log ');

支線劇情(2,2,3);

imshow(I2);

標題(“對數運算符分割結果”);

10的邊緣檢測。Canny算子

MATLAB程序用於實現以下功能:

I = im read(' xian . BMP ');

支線劇情(2,2,1);

imshow(壹);

標題(“原始圖像”)

I 1 = RGB 2 gray(I);

支線劇情(2,2,2);

imshow(I 1);

標題(“灰度圖像”);

I2=edge(I1,' canny ');

支線劇情(2,2,3);

imshow(I2);

標題(“canny算子分割結果”);

11.邊界跟蹤(bwtraceboundary函數)

色度控制中心

清理所有

I = im read(' xian . BMP ');

我猜的

imshow(壹);

標題(“原圖”);

I 1 = RGB 2 gray(I);%將彩色圖像轉換為灰度圖像。

threshold = gray thresh(I 1);%計算將灰度圖像轉換為二值圖像所需的閾值

BW=im2bw(I1,閾值);%將灰度圖像轉換為二進制圖像

我猜的

im show(BW);

標題(“二進制圖像”);

dim =大小(BW);

col = round(dim(2)/2)-90;%計算起點列坐標

row=find(BW(:,col),1);%計算起點線坐標

連通性= 8;

num _ points = 180;

contour = bwtraceboundary,[row,col],' N ',連通性,num _ points);

%提取邊界

我猜的

imshow(I 1);

堅持住;

plot(contour(:,2),contour(:,1),' g ',' LineWidth ',2);

標題(“邊界跟蹤圖像”);

12.霍夫變換

I = im read(' xian . BMP ');

烙餅= RGB 2 gray(I);

支線劇情(2,2,1);

imshow(烙餅);

標題(“灰度圖像”);

axis();

網格打開;

軸打開;

BW=edge(烙餅,《普魯伊特》);

支線劇情(2,2,2);

im show(BW);

標題(“prewitt算子邊緣檢測後的圖像”);

axis();

網格打開;

軸打開;

[H,T,R]= Hough(BW);

支線劇情(2,2,3);

imshow(H,[],' XData ',T,' YData ',R,' InitialMagnification ',' fit ');

標題('霍夫變換圖');

xlabel('\theta '),ylabel(' \ rho ');

軸打開,軸正常,保持;

P=houghpeaks(H,5,' threshold ',ceil(0.3 * max(H(:)));

x=T(P(:,2));y=R(P(:,1));

plot(x,y,' s ','顏色','白色');

lines=houghlines(BW,T,R,P,' FillGap ',5,' MinLength ',7);

支線劇情(2,2,4);、imshow(烙餅);

標題('霍夫變換圖像檢測');

axis();

網格打開;

軸打開;

堅持住;

max _ len = 0;

對於k=1:長度(行)

xy =[lines(k). point 1;lines(k). point 2];

plot(xy(:,1),xy(:,2),'線寬',2,'顏色','綠色');

plot(xy(1,1),xy(1,2),' x ','線寬',2,'顏色','黃色');

plot(xy(2,1),xy(2,2),' x ','線寬',2,'顏色','紅色');

len = norm(lines(k). point 1-lines(k). point 2);

if(len & gt;max_len)

max _ len = len

xy _ long = xy

結束

結束

plot(xy_long(:,1),xy_long(:,2),'線寬',2,'顏色','青色');

13.直方圖閾值法

用MATLAB實現直方圖閾值法;

I = im read(' xian . BMP ');

I 1 = RGB 2 gray(I);

圖;

支線劇情(2,2,1);

imshow(I 1);

標題(“灰度圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

[m,n]= size(I 1);%測量圖像尺寸參數

GP =零(1,256);%預先創建壹個矢量,用於存儲灰度概率。

對於k=0:255

GP(k+1)= length(find(I 1 = = k))/(m * n);%計算每個灰度級的概率,存儲在GP中相應的位置。

結束

Plot (2,2,2),bar (0: 255,gp,' g')%繪制直方圖。

標題(“灰度直方圖”)

Xlabel('灰度值')

Ylabel(“發生概率”)

I2=im2bw(I,150/255);

支線劇情(2,2,3),im show(I2);

標題(“閾值為150的分割圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I3=im2bw(I,200/255);%

支線劇情(2,2,4),im show(I3);

標題(“閾值為200的分割圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

14.自動閾值法:Otsu法

用MATLAB實現Otsu算法:

色度控制中心

清理所有

I = im read(' xian . BMP ');

支線劇情(1,2,1),imshow(I);

標題(“原始圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

level = gray thresh(I);%確定灰度閾值

BW=im2bw(I,level);

支線劇情(1,2,2),im show(BW);

標題(“Otsu閾值分割圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

15.膨脹操作

I = im read(' xian . BMP ');%加載圖像

I 1 = RGB 2 gray(I);

支線劇情(1,2,1);

imshow(I 1);

標題(“灰度圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

se=strel('disk ',1);%生成圓形結構元素

I2 = im dila(I 1,se);%用生成的結構元素擴展圖像

支線劇情(1,2,2);

imshow(I2);

標題(“擴展圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

16.腐蝕操作

用MATLAB實現腐蝕運算

I = im read(' xian . BMP ');%加載圖像

I 1 = RGB 2 gray(I);

支線劇情(1,2,1);

imshow(I 1);

標題(“灰度圖像”)

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

se=strel('disk ',1);%生成圓形結構元素

I2=imerode(I1,se);%用生成的結構元素蝕刻圖像。

支線劇情(1,2,2);

imshow(I2);

標題(“蝕刻圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

打開和關閉操作。

用MATLAB實現開閉操作

I = im read(' xian . BMP ');%加載圖像

支線劇情(2,2,1),imshow(I);

標題(“原圖”);

axis();

軸打開;%顯示坐標系

I 1 = RGB 2 gray(I);

支線劇情(2,2,2),imshow(I 1);

標題(“灰度圖像”);

axis();

軸打開;%顯示坐標系

se=strel('disk ',1);%采用半徑為1的圓作為結構元素。

I2=imopen(I1,se);%打開操作

I3=imclose(I1,se);%關閉操作

支線劇情(2,2,3),im show(I2);

標題(“計算後打開圖像”);

axis();

軸打開;%顯示坐標系

支線劇情(2,2,4),im show(I3);

標題(“關閉操作後的圖像”);

axis();

軸打開;%顯示坐標系

18.組合開啟和關閉操作

I = im read(' xian . BMP ');%加載圖像

支線劇情(3,2,1),imshow(I);

標題(“原圖”);

axis();

軸打開;%顯示坐標系

I 1 = RGB 2 gray(I);

支線劇情(3,2,2),imshow(I 1);

標題(“灰度圖像”);

axis();

軸打開;%顯示坐標系

se=strel('disk ',1);

I2=imopen(I1,se);%打開操作

I3=imclose(I1,se);%關閉操作

支線劇情(3,2,3),im show(I2);

標題(“計算後打開圖像”);

axis();

軸打開;%顯示坐標系

支線劇情(3,2,4),im show(I3);

標題(“關閉操作後的圖像”);

axis();

軸打開;%顯示坐標系

se=strel('disk ',1);

I4=imopen(I1,se);

I5=imclose(I4,se);

支線劇情(3,2,5),im show(I5);%開關操作圖像

標題(“打開-關閉操作圖像”);

axis();

軸打開;%顯示坐標系

I6=imclose(I1,se);

I7=imopen(I6,se);

支線劇情(3,2,6),imshow(I7);%開關操作圖像

標題(“關閉-打開操作圖像”);

axis();

軸打開;%顯示坐標系

19.形態學邊界提取

利用MATLAB實現以下功能:

I = im read(' xian . BMP ');%加載圖像

支線劇情(1,3,1),imshow(I);

標題(“原圖”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I 1 = im2bw(I);

支線劇情(1,3,2),imshow(I 1);

標題(“二進制圖像”);

axis();

網格打開;%顯示網格線

軸打開;%顯示坐標系

I2 = bwperim(I 1);%獲取該區域的周長

支線劇情(1,3,3),im show(I2);

標題(“邊界周界的二進制圖像”);

axis();

網格打開;

軸打開;

20.形態骨架提取

利用MATLAB實現以下功能:

I = im read(' xian . BMP ');

支線劇情(2,2,1),imshow(I);

標題(“原圖”);

axis();

軸打開;

I 1 = im2bw(I);

支線劇情(2,2,2),imshow(I 1);

標題(“二進制圖像”);

axis();

軸打開;

I2=bwmorph(I1,' skel ',1);

支線劇情(2,2,3),im show(I2);

標題(' 1骨架提取');

axis();

軸打開;

I3=bwmorph(I1,' skel ',2);

支線劇情(2,2,4),im show(I3);

標題(“二級骨架提取”);

axis();

軸打開;

21.直接提取四個頂點坐標。

I = im read(' xian . BMP ');

I = I(:,:,1);

BW = im2bw(I);

我猜的

imshow(~BW)

[x,y]=getpts

平滑濾波

h=fspecial('average ',9);

I_gray=imfilter(I_gray,h,' replicate ');%平滑過濾