关闭

Matlab图像剪切,超出图像区域指定颜色填充

标签: Matlab图像剪切超出图像区域指定颜色填充图像剪切
579人阅读 评论(0) 收藏 举报
分类:

Matlab图像剪切,超出图像区域指定颜色填充

尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/77507969
   Matlab自带图像剪切(裁剪)函数,即imcrop函数,但该函数对于超出图像边界区域是停止裁剪的,即对超出图像边界的部分不作裁剪处理。正常情况下,imcrop函数足够使用了。但有时,我们希望对于超出图像边界的区域,可以指定颜色填充,以便我们可以观察裁剪情况。
   若想在OpenCV中实现图像剪切,对超出图像区域指定颜色填充,可参考本人的博客:http://blog.csdn.net/guyuealian/article/details/77486096
   本人实现方法如下
function destImg=ImageCropPadding(gray_img,rect,paddingValue)
% ImageCropPadding函数功能说明:
% 该函数可实现根据rect(x,y,w,h)剪切指定的灰度图像,若剪切超出图像边界,则用paddingValue的值填充
% 输入参数:gray_img:必须输入灰度图像,暂时不支持RGB图像;
%              rect:指定剪切区域,类似于Matlab的imcrop函数用法
%      paddingValue:填充值(1-255)
%% For Example:
%  SrcImage=imread('images/liuyifei.jpg');
%  grabImage=rgb2gray(SrcImage);
%  figure,imshow(grabImage),title('grabImage');
%  rect=[-50,-50,500,500];
%  paddingValue=1;
%  destImg=ImageCropPadding(SrcImage,rect,paddingValue);
%  figure,imshow(destImg),title('destImg');
%%
x=rect(1);
y=rect(2);
w=rect(3);
h=rect(4);
destImg = im2uint8(zeros(h, w)+paddingValue/255); 
crop_x1 = max(1, x);
crop_y1 = max(1, y);
[rows,cols]=size(gray_img);
crop_x2 = min(cols, x + w); 
crop_y2 = min(rows, y + h);
roi_img = gray_img(crop_y1:crop_y2,crop_x1:crop_x2);
x1 = crop_x1 - x+1;
y1 = crop_y1 - y+1;
x2 = crop_x2 - x+1;
y2 = crop_y2 - y+1;
% I(y1:y2, x1:x2 ) = I(y1:y2 , x1:x2) + roi_img;
destImg(y1:y2, x1:x2 ) =  roi_img;
end
   调用方法:
SrcImage=imread('images/liuyifei.jpg');
grabImage=rgb2gray(SrcImage);
figure,imshow(grabImage),title('grabImage');
rect=[-50,-50,500,500];
paddingValue=1;%黑色填充
destImg=ImageCropPadding(SrcImage,rect,paddingValue);
figure,imshow(destImg),title('destImg');
运行效果:



0
0
查看评论

OpenCV图像剪切,超出图像区域指定颜色填充

OpenCV图像剪切,超出部分区域指定颜色填充, 在OpenCV中实现图像裁剪和剪切是很简单的,但剪切时常常会出现超出边界的区域的情况,对于超出图像边界的区域,我们希望可以采用指定的颜色来填充。OpenCV3中提供了一个填充边界的函数cv::copyMakeBorder(对应opencv2中的...
  • guyuealian
  • guyuealian
  • 2017-08-22 20:52
  • 414

利用MATLAB截取图片某个区域

pic = imread('1.jpg'); imshow(pic); [x,y] = ginput(2);    %确定图像上的两点利用ginput函数,返回值是两点的坐标 pic_1 = imcrop(pic,[x(1),y(1),abs(x(1)-...
  • u010288945
  • u010288945
  • 2015-06-30 15:01
  • 9191

用指定颜色填充一个连接域

在图像处理里,如果我们需要填充一个区域,使该区域为相同的颜色,则比较常用的是洪水填充法。洪水填充法可以用DFS也可以用BFS实现。   opencv下有函数实现该功能:    FloodFill 用指定颜色填充一个连接域 void cvFloodFill( CvAr...
  • yansmile1
  • yansmile1
  • 2015-07-05 09:07
  • 635

[图像]获取图片中感兴趣区域的信息(Matlab实现)

如果一幅图中只有一小部分图像你感兴趣(你想研究的部分),那么截图工具就可以了,但是如果你想知道这个区域在原图像中的坐标位置呢? 这可是截图工具所办不到的,前段时间我就需要这个功能,于是将其用Matlab实现。其实只要用到Matlab中的两个函数: 函数: imrect 函数: getPositio...
  • humanking7
  • humanking7
  • 2015-07-09 22:04
  • 7396

matlab 图片的剪切和旋转

图片的旋转:  imrotate(image,90);图片的剪切: imcrop(image,[10 10 50 60 ]);
  • yihaizhiyan
  • yihaizhiyan
  • 2011-07-05 10:18
  • 4402

图像处理中矩形标记图像中某一块区域matlab中rectangle函数介绍

rectangle('Position',[x,y,w,h]) 从点(x,y)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值。 注意,按指定的比例显示矩形,需要设置坐标轴数据宽高比来使得x和y轴有等长的单位。你可以用命令axis equal 或者daspect([1,1,1]...
  • whu_zcj
  • whu_zcj
  • 2016-03-04 19:47
  • 4562

MATLAB: 图像批量剪切

MATLAB图像批量剪切Github: loper-eswai/MagicLab 问题描述源文件夹下有若干子文件夹,包含不同类别的图片文件。现要求将每个图片剪切成相同大小,保存在目标文件夹。解决方案参数设置: - src_dir: 源文件夹 [字符串] - dst_dir: 目标文件...
  • eswai
  • eswai
  • 2016-10-27 19:33
  • 250

matlab 图像剪切

趁热打铁! 学习图像剪切。 matlab源码 function [imout] = ImageCrop( imin,x,y,width,height ) %UNTITLED13 此处显示有关此函数的摘要 %   此处显示详细说明 [m,n,g] = size(i...
  • amingc76
  • amingc76
  • 2016-12-03 19:02
  • 140

MATLAB 标注 图像上截取Rect区域图像

Matlab里面根据鼠标的响应,截取rect区域图像,并且保存图像。 代码非常简单,里面没有做越界判断。 clc; clear; % label and rect Forder = [pwd '\images\']; files = dir([Forder,'*.png...
  • anan1205
  • anan1205
  • 2015-12-21 14:16
  • 3499

Matlab 对图像的读写,显示,保存,局部图像剪切,替换的操作

1.编写 M 文件。     用过 Matlab 的人应该都接触过 M 文件
  • YangYudong2014
  • YangYudong2014
  • 2014-09-22 18:47
  • 2816
    个人资料
    • 访问:552516次
    • 积分:5880
    • 等级:
    • 排名:第5195名
    • 原创:106篇
    • 转载:51篇
    • 译文:1篇
    • 评论:174条
    博客专栏
    最新评论