数字图像学习3

接着上次的写。。。。。上篇摸这
这次就介绍下如何对一幅数字图像进行数学上的相关处理,实质就是对矩阵进行数学运算,以求一幅图像的灰度图的最大灰度、最小灰度和平均灰度值和图像的马赛克为例。
首先将图像读入进来:

>>  f = imread('C:\Users\Administrator\Desktop\1.jpg');
>> imshow(f)

将原始的图像转换为灰度图并获得大小:

>> gray = rgb2gray(f);
>> [rows,cols]=size(gray);

对矩阵进行运算获得相关的值:

for i = 1:rows
    for j = 1:cols
       if gray(i,j) > max
           max = gray(i,j);
       end
       if gray(i,j) < min
          min = gray(i,j);
       end
       avg = avg + gray(i,j);
    end
end
%输出最大最小和平均值
max
min 
avg = avg/(rows*cols)



生成马赛克图像我参考的是这个,原理就是对邻域像素平均值赋给邻域中的所有像素,代码是直接粘过来的。

clear all; close all;clc;

img=imread('C:\Users\Administrator\Desktop\1.jpg');
img = rgb2gray(img);
imshow(img,[]);

[h,w]=size(img);
imgn=zeros(h,w);

n=12;
nw=floor(w/n)*n;
nh=floor(h/n)*n;

for y=1:n:nh
    for x=1:n:nw
        imgn(y:y+n-1,x:x+n-1)=mean(mean(img(y:y+n-1,x:x+n-1)));       
    end

    imgn(y:y+n-1,nw+1:w)=mean(mean(img(y:y+n-1,nw+1:w)));   %处理最后一列
    imgn(y,1:w)=128; 
end

for x=1:n:nw
    imgn(nh+1:h,x:x+n-1)=mean(mean(img(nh+1:h,x:x+n-1)));   %处理最后一行
    imgn(1:h,x)=128;    
end

imgn(nh+1:h,nw+1:w)=mean(mean(img(nh+1:h,nw+1:w)));     %处理最后一个角

imgn(1:h,nw)=128;
imgn(1:h,w)=128;

imgn(nh,1:w)=128;
imgn(h,1:w)=128;

figure;imshow(imgn,[])

马赛克之后的图
下面介绍个简单实现马赛克图像的方法,就是对图形进行缩小再放大回原来的大小(或者缩小放大调换),则会产生像素点的丢失,视觉效果就像马赛克

IMG = imread('C:\Users\Administrator\Desktop\1.jpg');
pix_grp = 10; %此数值越大马赛克效果越明显 
[widt,height,deep] = size(IMG);
mosaic = imresize(IMG,[floor(height/pix_grp) floor(widt/pix_grp)]); %缩小图像
mosaic = imresize(mosaic,[widt,height],'nearest'); %放大图像
imshow(mosaic);

马赛克的图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值