수색…


기본 이미지 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 원래의 필터링되지 않은 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 이 있다고 가정 해 rgbImg (예 : 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 는 이미지의 모든 객체에 대한 구조체를 포함하는 구조체 배열입니다. 객체의 측정 된 속성에 액세스하는 것은 간단합니다. 예를 들어, 첫 번째 객체의 영역을 표시하려면 간단히,

>> 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