matlab图片加上掩模
时间: 2023-07-13 19:39:31 浏览: 275
您好,要将掩模应用于MATLAB图片,可以使用以下步骤:
1. 读入原始图片和掩模图片
```matlab
img = imread('original_image.jpg'); % 读入原始图片
mask = imread('mask_image.jpg'); % 读入掩模图片
```
2. 将掩模图片转换为二值化图像
```matlab
mask = im2bw(mask);
```
3. 将掩模应用于原始图片
```matlab
masked_img = img;
masked_img(repmat(~mask, [1 1 3])) = 0;
```
这里的`repmat`函数是将二值化的掩模图像扩展到与原始图像相同的大小,然后使用`~`运算符取反以使黑色部分变为1,白色部分变为0。然后使用`repmat`函数复制这个反转后的掩模图像三次,以匹配原始图像的RGB通道。最后将像素值为0的部分设置为0,即在原始图像中去除掩模图像中的颜色。
4. 显示结果
```matlab
subplot(1,2,1), imshow(img), title('Original Image');
subplot(1,2,2), imshow(masked_img), title('Masked Image');
```
这里使用`subplot`函数将两个图像并排显示,以便比较原始图像和应用掩模后的图像。
希望这可以帮助到您。
相关问题
matlab生成有加性高斯噪声和椒盐噪声的图像,进行低通滤波处理并比较
在MATLAB中,你可以通过以下几个步骤生成包含加性高斯噪声(AWGN)和椒盐噪声的图像,对其进行低通滤波处理,并对比原始和处理后的效果:
1. **生成图像**:
- 使用`imread`函数读取一张图像作为基础。
```matlab
img = imread('your_image.jpg'); % 替换为你要处理的图片文件名
```
2. **添加高斯噪声**:
- `awgn`函数可以向图像添加加性高斯噪声。例如,给定信号到噪声比(SNR),计算噪声后再添加:
```matlab
snr_db = 10; % dB形式的SNR
sigma = sqrt(10^(-snr_db/10)); % 计算标准差
noisy_img = awgn(img, 'measured', sigma);
```
3. **添加椒盐噪声**:
- MATLAB并没有内置椒盐噪声函数,你需要手动创建一个二值掩模然后对图像进行点运算:
```matlab
noise_mask = rand(size(img)) < 0.05; % 创建随机椒盐噪声掩模
salt_pepper_noisy_img = img .* (1 - noise_mask) + 128 * noise_mask; % 点运算
```
这里假设椒盐噪声的比例是5%。
4. **低通滤波**:
- 使用`imgaussfilt`函数进行低通滤波,比如使用5x5的高斯核:
```matlab
lowpass_img = imgaussfilt([noisy_img; salt_pepper_noisy_img], [5 5]); % 对两幅图同时处理
```
5. **比较结果**:
- 可以通过`imshowpair`函数并行显示原始、加噪和降噪后的图像,以便直观地观察变化:
```matlab
figure;
subplot(2, 2, 1); imshow(img, []);
title('Original Image');
subplot(2, 2, 2); imshow(noisy_img, []);
title('Noisy Image with Gaussian Noise');
subplot(2, 2, 3); imshow(salt_pepper_noisy_img, []);
title('Noisy Image with Salt and Pepper Noise');
subplot(2, 2, 4); imshow(lowpass_img, []);
title('Low-pass Filtered Image');
```
阅读全文