Matlab を画像処理に使用する方法

Matlabを使用した画像処理

画像処理は、画像の品質を向上させたり、画像から必要な情報を取得したりするために、画像のデジタル プロパティを操作するプロセスです。画像処理アプリケーションに画像をインポートし、画像を分析して、画像を操作して、望ましい結果を生み出す適切な出力を取得する必要があります。

この記事では、Matlab を使用して画像の特徴を特定し、画像の特徴を調整し、画質を向上させるための画像処理と分析の基本について説明します。

前提条件

  • [Matlab] がコンピュータにインストールされています。

  • 【Matlab】の基本を理解する。

Matlab に画像をインポートする

イメージをインポートするには、イメージを Matlab の現在のディレクトリに取り込むことが含まれます。このようにして画像を使用することができます。

これを行うには、Matlab を開いて次のコマンドを実行します。

i = imread('name of the image;') %This will assign the image to i
imshow(i);
复制代码

Matlab を使用して画像を強化する

これは、視覚表示により適した結果を得るためにデジタル画像を改善するプロセスです。画像のフィルタリングとブレ除去によって画像の向上を実現できます。

画像フィルタリング

これは、画像の選択された属性を強調または省略する画像強調の一形式です。画像フィルタリングでは主に、画像内の特定のピクセルの濃度を変更します。

カラー フィルタリングは、画像をより魅力的にしたり、特定の画像ピクセルを強調したりします。たとえば、緑は植生を強調し、青は水域を強調できます。

このプロセスにより、適用される濃度レベルに応じて、画像が赤みがかったり、緑がかったり、青みがかったように見えたりすることがあります。imhist 関数は、画像内の各ピクセルの色の強度をグラフ表示 (ヒストグラム) します。

i =  imread('nyali.jpg');
imshow(i)
Red = i(:,:,1);
Green = i(:,:,2);
Blue = i(:,:,3);
temp = i;
复制代码
imhist(Red);
复制代码
imhist(Green);
复制代码
imhist(Blue);
复制代码
figure;
temp = i;
temp(:,:,1) = temp(:,:,1) + 100;
imshow(temp);
复制代码
figure;
imshow(i)
temp = i;
temp(:,:,2) = temp(:,:,2) + 100;
imshow(temp);
复制代码
temp = i;
temp(:,:,3) = temp(:,:,3) + 100;
imshow(temp);
复制代码

画像のブレを除去する

画像上のぼやけたピクセルをより鮮明にして、画像の鮮明度を高めます。これを機能させるには、まず以下のコードを使用して画像をインポートします。

i =  imread('nyali.jpg');       %this code imports the image
imshow(i)
复制代码
  • 元の画像からぼかした画像 i を作成します。この画像は、ブレ除去プロセスのシミュレーターとして使用されます。

  • まず、fspecial を使用して指定された線形運動 (この場合は 10 度の角度で 50 ピクセルを使用します) を持つ点像分布関数 (PSF) を作成し、次に imfilter 関数積を使用して PSF と画像を畳み込みます。

PSF = fspecial('motion',50,10);
Idouble = im2double(i);
blurred = imfilter(Idouble,PSF,'conv','circular');
imshow(blurred)
复制代码
  • deconvwnr コマンドを使用して、ぼやけた画像を復元します。

wnr1 = deconvwnr(blurred,PSF);
imshow(wnr1)
复制代码

画像に含まれるオブジェクトの数を取得します

画像に含まれるオブジェクトの数は、次の手順で求めることができます。

  • 数値を必要としないオブジェクトを削除します。

  • 元の背景を削除して、画像に均一な背景を与えます。

  • 画像をグレースケールに変更します。

  • 画像のバイナリ バージョンを作成すると、分析対象のオブジェクトの数値分析が可能になります。

このプロセスでは次のコード スニペットが使用されます。

i = imread('imageName'); %import the image
imshow(i)
复制代码
se = strel('disk',150);
background = imopen(i,se);  %Performs morphological openning
imshow(background)
复制代码
  • 从原始图像中去除背景近似图像。这将形成一个具有统一背景但有点暗的结果图像。

i2 = i - background; 
imshow(i2)
复制代码
  • 将图像格式从RGB改为灰度。新处理的图像将被分配到i3 。

i3 = rgb2gray(i2);
imshowi3
复制代码
  • 使用imbinarize 命令来创建灰度图像的二进制版本i3 。

bw = imbinarize(i3);
bw = bwareaopen(bw,50);
imshow(bw)
复制代码

二进制版本的图像可以进行物体分析。结果的准确性取决于物体的大小、参数连通性和物体之间的间距。

请注意,绿色的物体不存在于二进制版本的图像中,因为真正的颜色(红、绿、蓝)不能被二进制化。
cc = bwconncomp(bw) % shows image information复制代码

在图像中找到一个特定颜色的区域

在图像中具有不同颜色的物体的区域可以通过颜色阈值法用Matlab确定。阈值化是根据强度将像素分配到某些类别。

颜色阈值处理也使我们能够确定地图中选定特征的区域。例如,在卫星地图中找到一个水体的面积。

为了证明这个概念,我将从一张卫星地图图片中确定一个水体的面积。该图片的分辨率为480 * 494 像素,深度为32,按卫星计算。

i = imread('l.victoria.PNG'); %import the image
imshow(i)
复制代码
i2 = rgb2gray(i); % make a grayscale image of i
imshow(i2)
复制代码
imhist(i2) %histogram for pixel distributions复制代码

从直方图上看,X轴代表强度值,Y轴代表像素数。

  • 在Matlab窗口工具栏中打开APPS,向下滚动到图像处理和计算机视觉,然后点击颜色阈值。

  • 在新的窗口中从工作区加载一个图像,然后选择一个颜色空间,点击HSV。

  • 调整标有H 的旋钮以去除背景色,调整S 和V 以使要分析的对象的边界平滑。

  • 通过点击show binary 按钮,创建一个二进制版本的结果图像。

  • 将二进制版本导入到工作区进行进一步分析,它将被标记为BW 。二进制版本的形状与湖泊的形状相似,我们可以用函数imshowpair ,直观地比较这两幅图像。

imshowpair(i,BW,'montage')
复制代码
  • 为了找到二进制版本图像的图像统计,使用regionprops 函数。

stats = regionprops('table',BW,'all')
复制代码

以像素为单位的区域面积是表格中的面积道具之和。

areainpixels = sum(props.Area)
复制代码

面积可以使用地图上可能提供的比例尺转换为平方公里。通常,比例尺有一个预先确定的数值,以米、英里或公里为单位表示。

使用imtool(i) 功能来测量线性比例尺的起点和终点之间的距离。测量值的单位是像素,它代表比例尺的预定尺寸。从像素转换到所需的单位。

总结

Matlab为图像处理提供了一个完美的环境,因为它的命令和片段很容易遵循和应用。

图像处理有广泛的应用领域,如。

  • 摄影。

  • 图像的地理数据分析。

  • 装饰品。

  • 了解生物结构。

  • 机器视觉,和娱乐。

从图像中提取的信息的准确性取决于用于处理图像的工具的质量,Matlab为图像处理提供了更好的工具。

おすすめ

転載: blog.csdn.net/qq_42003636/article/details/128835010