用matlab写代码实现(棕色的马图)Fig.6.6.1的背景消除
时间: 2023-08-26 12:35:20 浏览: 102
以下是MATLAB代码实现(与前面Python代码实现相同),用于实现棕色的马图Fig.6.6.1的背景消除:
```matlab
% 读取原始图像并将其转换为灰度图像
img = imread('horse.png');
gray = rgb2gray(img);
% 对图像进行高斯滤波
blur = imgaussfilt(gray, 5);
% Otsu二值化
thresh = graythresh(blur);
bw = imbinarize(blur, thresh);
% 形态学操作
se = strel('rectangle', [3, 3]);
opening = imopen(bw, se);
closing = imclose(opening, se);
% 连通组件标记
[L, n] = bwlabel(closing);
stats = regionprops(L, 'BoundingBox', 'Area');
% 提取对象像素值并生成新的图像
output = zeros(size(img));
for i = 1:n
box = round(stats(i).BoundingBox);
area = stats(i).Area;
if area < 100 % 去除小的噪点
continue
end
mask = zeros(size(img));
mask(L==i) = 1;
mask = uint8(mask);
mask = bsxfun(@times, img, mask);
output(mask~=0) = mask(mask~=0);
end
% 显示结果
subplot(1, 2, 1), imshow(img), title('Original')
subplot(1, 2, 2), imshow(output), title('Output')
```
运行代码后,将显示原始图像和去除背景后的结果。
阅读全文