窗操作中的,为什么扩展图像

用窗函数(类比卷积核)在对图像进行操作时,会遇到尴尬的问题,图像的边处操作很容易就程序错误了,没有值……
在这里插入图片描述
那我们怎么办呢?莫非不处理边上无法操作的点?当然也可以,不过少处理一圈边也挺难受的。那么,我们就补上一圈吧,补上一圈就可以。
怎么补?补上一圈白的?还是一圈黑的?都会影响我们的图,我们来个镜像吧,向下面这样,影响就没那么大了。当然真的扩展边不会扩这么大,下图只是为了说明这个问题。
在这里插入图片描述
那么怎么扩展呢,下面咱们看一下程序

本文用的函数是

B = padarray(A,padsize,padval,direction)

A是要扩充的图像;
B是扩充后的图像;
padsize是填充多少行、多少列,例如[5,5]填充5行,5列;
padval是填充的方法,

'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展;
'replicate'表示图像大小通过复制外边界中的值来扩展;
'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。
默认用0进行填充

direction是填充的方向,

'pre'表示在每一维的第一个元素前填充;
'post'表示在每一维的最后一个元素后填充;
'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。(默认)

主程序

clc
clear all

im=imread('QQ截图20190306112110.jpg'); 
w=601;//扩展大小
r=im(:,:,1);
g=im(:,:,2);
b=im(:,:,3);
r=im2double(r);
g=im2double(g);
b=im2double(b);
% [height,width,~]=size(im);
padsize=[(w-1)/2,(w-1)/2];
padr = padarray(r,padsize,'symmetric','both');
padg = padarray(g,padsize,'symmetric','both');
padb = padarray(b,padsize,'symmetric','both');
imk(:,:,1)=padr;
imk(:,:,2)=padg;
imk(:,:,3)=padb;

% savepath = 'D:\TONGDAO\比对\实验对比\测试1';
% sspath=[savepath, '\原.jpg'];
sspath='扩展图.jpg';
imwrite(imk,sspath);

另外一个应用程序

im=imread('QQ截图20190306112110.jpg'); 
w=601;//扩展大小
g=im(:,:,2);
b=im(:,:,3);
r=im2double(r);
g=im2double(g);
b=im2double(b);
[height,width,~]=size(im);
padsize=[(w-1)/2,(w-1)/2];
padr = padarray(r,padsize,'symmetric','both');
padg = padarray(g,padsize,'symmetric','both');
ret=im;
for i=1:height
    for j=1:width
        slider = padr(i:i+w-1,j:j+w-1);
        slideg = padg(i:i+w-1,j:j+w-1);
        rm=mean(mean(slider));
        gm=mean(mean(slideg));
        tem=rm+gm-r(i,j);
        tem=tem*255;
        tem=uint8(tem);
        ret(i, j, 1)=tem;
    end
end


end
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值