Hello Mat

 找回密码
 立即注册
查看: 4422|回复: 0

kirsch锐化滤波器

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-3-8 23:26:51 | 显示全部楼层 |阅读模式
  1. function im1 = kirsch_fspecial(im,type)
  2.     if nargin < 2
  3.         type = 'kirsch';
  4.     end
  5.     if ~isa(im,'double')
  6.         im = double(im)/255;
  7.     end
  8.    switch type
  9.        case 'kirsch'  % kirsch filter
  10.         for dim=1:size(im,3)  % 维数,RGB或者灰度图像
  11.             a = im(:,:,dim);
  12.             b=[-5 3 3;   % 模板1
  13.                 -5 0 3;
  14.                 -5 3 3]/1512;
  15.             c=[3 3 3;    % 模板2
  16.                 -5 0 3;
  17.                 -5 -5 3]/1512;
  18.             d=[3 3 3;    % 模板3
  19.                 3 0 3;
  20.                 -5 -5 -5]/1512;
  21.             e=[3 3 3;    % 模板4
  22.                 3 0 -5;
  23.                 3 -5 -5]/1512;
  24.             f=[3 3 -5;   % 模板5
  25.                 3 0 -5;
  26.                 3 3 -5]/1512;
  27.             g=[3 -5 -5;  % 模板6
  28.                 3 0 -5;
  29.                 3 3 3]/1512;
  30.             h=[-5 -5 -5; % 模板7
  31.                 3 0 3;
  32.                 3 3 3]/1512;
  33.             i=[-5 -5 3;  % 模板8
  34.                 -5 0 3;
  35.                 3 3 3]/1512;
  36.             b=conv2(a,b,'same');b=abs(b);  % 卷积后求绝对值
  37.             c=conv2(a,c,'same');c=abs(c);  % 卷积后求绝对值
  38.             d=conv2(a,d,'same');d=abs(d);  % 卷积后求绝对值
  39.             e=conv2(a,e,'same');e=abs(e);  % 卷积后求绝对值
  40.             f=conv2(a,f,'same');f=abs(f);  % 卷积后求绝对值
  41.             g=conv2(a,g,'same');g=abs(g);  % 卷积后求绝对值
  42.             h=conv2(a,h,'same');h=abs(h);  % 卷积后求绝对值
  43.             i=conv2(a,i,'same');i=abs(i);  % 卷积后求绝对值
  44.             p=max(b,c);  % 取大值
  45.             p=max(d,p);  % 取大值
  46.             p=max(e,p);  % 取大值
  47.             p=max(f,p);  % 取大值
  48.             p=max(g,p);  % 取大值
  49.             p=max(h,p);  % 取大值
  50.             p=max(i,p);  % 取大值
  51.             im1(:,:,dim) = double(p).*255;
  52.         end
  53.    end
  54. end
复制代码


算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-20 18:14 , Processed in 0.231459 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表