サーチ…


基本イメージI / O

>> img = imread('football.jpg');

imreadを使用して、イメージファイルをMATLABの行列に読み込みます。
イメージをimread 、そのイメージはメモリ内のND配列として保存されます。

>> size(img)
ans =
 256   320     3

イメージ'football.jpg'は256行と320列を持ち、赤、緑、青の3つのカラーチャネルを持っています。

これでミラー化できます:

>> mirrored = img(:, end:-1:1, :);  %// like mirroring any ND-array in Matlab

最後に、 imwriteを使ってイメージとして書き戻します。

>> imwrite(mirrored, 'mirrored_football.jpg');

インターネットから画像を取得する

インターネットに接続している限り、ハイパーリンクから画像を読み取ることができます

I=imread('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png');

2D FFTによるフィルタリング

1D信号の場合と同様に、フーリエ変換を適用し、周波数領域のフィルタを掛けて、空間領域に変換することによって画像をフィルタリングすることが可能です。 Matlabを使用して画像にハイパスフィルタまたはローパスフィルタを適用する方法は次のとおりです。

image元のフィルタリングされていないイメージとし、2D FFTを計算する方法は次のとおりです。

ft = fftshift(fft2(image));

ここで、スペクトルの一部を除外するためには、ピクセル値を0に設定する必要があります。元の画像に含まれる空間周波数は、中央からエッジにマッピングされます( fftshiftを使用した後)。低周波を除外するために、中心円形領域を0に設定します。

組み込み関数を使用して半径D円盤状のバイナリマスクを生成する方法は次のとおりです。

[x y ~] = size(ft);
D = 20;
mask = fspecial('disk', D) == 0;
mask = imresize(padarray(mask, [floor((x/2)-D) floor((y/2)-D)], 1, 'both'), [x y]);

周波数領域画像のマスキングは、上記で得られたバイナリマスクを点ごとにFFTに乗算することによって行うことができる。

masked_ft = ft .* mask;

さて、逆FFTを計算しましょう:

filtered_image = ifft2(ifftshift(masked_ft), 'symmetric');

画像の高域はシャープなエッジなので、このハイパスフィルタを使用して画像をシャープにすることができます。

イメージフィルタリング

画像rgbImgがあるとしましょう。たとえば、 imreadを使用してimreadます。

>> rgbImg = imread('pears.png');
>> figure, imshow(rgbImg), title('Original Image')

ここに画像の説明を入力

fspecialを使用して2Dフィルタを作成します。

>> h = fspecial('disk', 7);
>> figure, imshow(h, []), title('Filter')

ここに画像の説明を入力

イメージにフィルタを適用するには、 imfilterを使用します。

>> filteredRgbImg = imfilter(rgbImg, h);
>> figure, imshow(filteredRgbImg), title('Filtered Image')

ここに画像の説明を入力

接続されたリージョンのプロパティの測定

バイナリイメージbwImg 、接続されたオブジェクトがいくつか含まれています。

>> bwImg = imread('blobs.png');
>> figure, imshow(bwImg), title('Binary Image')

ここに画像の説明を入力

画像内のすべてのオブジェクトのプロパティ(面積、重心など)を測定するには、 regionprops使用しregionprops

>> stats = regionprops(bwImg, 'Area', 'Centroid');

statsは、イメージ内のすべてのオブジェクトの構造体を含むstruct配列です。オブジェクトの測定されたプロパティにアクセスするのは簡単です。たとえば、最初のオブジェクトの領域を表示するには、単純に、

>> stats(1).Area

ans =

    35

オブジェクトの重心を元の画像にオーバーレイすることによって視覚化する。

>> figure, imshow(bwImg), title('Binary Image With Centroids Overlaid')
>> hold on
>> for i = 1:size(stats)
scatter(stats(i).Centroid(1), stats(i).Centroid(2), 'filled');
end

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow