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 ');%平滑過濾