Matlab デジタル画像処理 学期末インターンシップ コード画像強調 (複数の方法) カラー画像処理 エッジ検出 形態学的処理 画像セグメンテーション

clc,clear,すべて閉じる
imfinfo('001.bmp');
I=imread('001.bmp');
I1=im2double(I);
形();
サブプロット(221)
imshow(I);
title('原始画像')

%画像を回転
%バイリニア補間法 (bilinear) は 30°回転し、結果の画像が元の画像と同じサイズになるように画像を切り取ります (切り抜き) a1= imrotate(I1,15,'bilinear','crop'
) ;
a2=imrotate(I1,90,'bilinear','crop');           
a3=imrotate(I1,180,'bilinear','crop');
subplot(222)
imshow(a1);
title('15°回転' );
subplot(223)
imshow(a2);
title('90°回転');
subplot(224)
imshow(a3);
title('180°回転');

%画像ヒストグラムを描画
I1=im2double(I);
I2=rgb2gray(I1);
Figure()
imhist(I2);
title('画像ヒストグラム');

%画像強調
Figure()
subplot(221)
imshow(I);
title('元の画像')
% 部分的線形変換強調
[M,N]=size(I2);
for x = 1:M
    for y = 1: N
        if I2(x,y)<=0.2 %a=0.2,a'=0.2
            I2(x,y)=I1(x,y);
        elseif I2(x,y)<=0.6 %b=0.6,b ' =0.8
            I2(x,y)=(0.8-0.2)/(0.6-0.2)*( I2(x,y)-0.2)+0.2; else %
        M'=1,M=0.96
            I2(x,y ) =(1-0.2)/(0.96-0.2)*( I2(x,y)-0.6)+0.8;
        end
    end
end
subplot(222)
imshow(I2)
title('区分線形変換強化');
% 対数変換拡張
I1=im2double(I);
[M,N]=size(I1);
x = 1:M の場合
    for y = 1:N
        I1(x,y)=2*log(I1(x,y)+1);
    end
end
subplot(223)
imshow(I1)
title('強化された対数変換');

% コントラスト強調
I1=im2double(I);
I2=imadjust(I1,[0.3 0.7],[0 1],1);
subplot(224)
imshow(I2)
title('コントラスト強調画像')

% 平均値フィルターで強化された画像を滑らかにする
I1=im2double(I);
% フィルター、ガシアン、平均、ディスク、ラプラシアン、プレウィットを生成
w=fspecial('average',[3 3]);
% コピーして画像サイズを'複製
' %'対称' イメージ サイズは、外側の境界の値によって境界をミラーリングすることによって作成されます。
%'円形' イメージ サイズは、イメージを 2 次元周期関数の周期として扱うことで拡張されます。
g=imfilter(I1,w,' ');
Figure()
subplot(221)
imshow(I);
title('元の画像')
subplot(222)
imshow(g)
title('平均フィルタ スムーズ強化画像');

%laplacian 画像をシャープにして強調します
I1=im2double(I);
w=fspecial('laplacian',0);
g=I1+imfilter(I1,w,'replicate');
subplot(223)
imshow(g)
title('ラプラシアン シャープニング強化画像');
w2=[-1 -1 -1;-1 8 -1;-1 -1 -1];
g2=I1-imfilter(I1,w2,'replicate');
subplot(224 )
imshow(g2)
title('ラプラシアンシャープ化された画像');

%カラー画像の強調
%カラー画像の 3 つのレイヤーを抽出 rgb
fr=I2(:,:,1);
fg=I2(:,:,2); fb
=I2(:,:,3);fr_medfilt=medfilt2(fr); fg_medfilt=medfilt2(fg); fb_medfilt=medfilt2(fb); %処理後のカラー 3 レイヤーを結合fc_medfilt=cat(3,fr_medfilt,fg_medfilt,fb_medfilt);





%エッジ検出
%Sobel および Prewitt メソッドは、垂直および/または水平エッジを検出できます。
%Roberts メソッドは、水平から 45 度の角度および/または 135 度の角度でエッジを検出できます。
I2=rgb2gray(fc_medfilt);
BW1=edge(I2,'sobel');
BW2=edge(I2,'prewitt');
BW3=edge(I2,'roberts');
BW4=edge(I2,


















% 画像形態学的処理、侵食と膨張
% 腐食
%strel: さまざまな形状とサイズを使用して要素を構築
%ひし形菱形構造要素、円盤状構造要素、線状構造要素、八角形八角形構造要素
%ペアおよび周期線平面 構造要素、長方形構造要素、正方形 正方形 構造要素
se1=strel('disk',5,4);%0,4,6,8
se2=strel('diamond',5);
se3=strel('square ',5);
% 展開
A1=imdilate(fc_medfilt,se1);
A2=imdilate(fc_medfilt,se2);
A3=imdilate(fc_medfilt,se3);
Figure()
subplot(221)
imshow(fc_medfilt)
title('色処理フィルタ画像')
subplot (222)
imshow(A1)
title('disk')
subplot(223)
imshow(A2)
title('diamond')
subplot(224)
imshow(A3)
title('square')

%画像セグメンテーション
%フルしきい値セグメンテーション
%imcomplement(): バイナリ画像の色反転
I1=rgb2gray(I);
f=im2double(I1);
T2=graythresh(f);
g1=imcomplement(im2bw(f,T2)) ;
Figure ()
subplot(131);
imshow(I1);
title('グレースケール画像');
subplot(132);
imshow(g1);
title('閾値セグメンテーション画像');
% 反復法
T=0.5*( double(min (f(:)))+double(max(f(:))));
done=false;
while(~done)
    g=f>=T;
    Tnext=0.5*(mean(f(g) )+mean (f(~g)));
    done=abs(T-Tnext)<0.5;T=Tnext;
end
g=imcomplement(im2bw(f,T));
subplot(133);
imshow(g);
title('閾値セグメンテーション画像');
 

おすすめ

転載: blog.csdn.net/zcs2312852665/article/details/124946165