Matlab图像处理——实现图片指定区域打马赛克处理

今天给大家带来如何使用MATLAB,在一张图片中通过鼠标指定区域,实现马赛克效果的添加。马赛克效果能够有效地保护隐私或者美化图片,下面就跟随我的步骤,一起来实现这个有趣图片打码功能吧!

一、主要步骤

1.读取图片,通过鼠标框选指定区域。

2.设置马赛克块大小,默认是10。

3.定义mosaic函数,用于实现马赛克效果。

4.将得到的马赛克图像叠加到原始图像的指定区域。

图片

二、代码实现

%% 用matlab怎么在图片鼠标指定区域打马赛克
clear
clc
%% 读取图像
Image = imread('OIP.jpg'); % 替换为你自己的图像文件路径
imshow(Image)
rect = round(getrect);  %返回区域位置信息
cropImage = imcrop(Image ,rect);  %索引图像
%% 设置马赛克块的大小
blockSize = 10;
%将源图像三个通道值取出
fr = cropImage(:,:,1);
fg = cropImage(:,:,2);
fb = cropImage(:,:,3);
mosaicr = mosaic(fr, blockSize);
mosaicg = mosaic(fg, blockSize);
mosaicb = mosaic(fb, blockSize);
mosaicImage = cat(3,mosaicr, mosaicg, mosaicb);
% 将马赛克图像叠加到原始图像中
Image(rect(2):rect(2)+rect(4), rect(1):rect(1)+rect(3), :) = mosaicImage;
% 显示结果
figure;
imshow(Image);
title('叠加马赛克效果');
%% 马赛克效果实现
function mosaicImage = mosaic(originalImage, blockSize)
% 获取图像的大小
[rows, cols, ~] = size(originalImage);
% 创建马赛克效果
mosaicImage = originalImage;
for i = 1:blockSize:rows
    for j = 1:blockSize:cols
        % 计算每个块的平均颜色
        block = originalImage(i:min(i+blockSize-1,rows), j:min(j+blockSize-1,cols), :);
        averageColor = mean(mean(block,1),2);
        % 将整个块设置为均值颜色
        mosaicImage(i:min(i+blockSize-1,rows), j:min(j+blockSize-1,cols), :) = averageColor;
    end
end
end

 在mosaic函数内,我们使用嵌套循环遍历图像的每个块,计算块的平均颜色,并将整个块设置为均值颜色。

最后

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真…希望能帮到你!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值