⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bf.m

📁 一个简单的在图像上做标记的实现算法,通过此算法可以大体了解图像处理标记的基本算法原理
💻 M
字号:
function I=BF(I, CirPara)
%在图象上标住一个红色圆心和绿色的圆轮廓
Im=imread('D:\MATLAB7\work\111.jpg');%彩色图象类型
I=rgb2gray(Im);
CirPara=[111,72,30];
% % %I=BF(I, CirPara);

%I=imread('D:\MATLAB7\work\coins.png');%灰度图象类型
%CirPara=[96,140,16];
% %I=BF(I, CirPara);
[size_y,size_x] = size(I);
x = CirPara(1);
y = CirPara(2);
r = CirPara(3);
I1(:,:,1) = I;
I1(:,:,2) = I;
I1(:,:,3) = I;
if islogical(I(1,1))%判断是否是二值图象还是灰度图象
	Value=1;
else
	Value=255;
end
%%%以下画圆心的十字
ox = x;
for oy = y-2:y+2 
    if( ox <= size_x && ox >= 1 && oy <= size_y && oy >= 1)
        I1(oy,ox,1)=Value;
        I1(oy,ox,2)=0;
        I1(oy,ox,3)=0;
    end
end
oy = y;
for ox = x-2:x+2 
    if( ox <= size_x && ox >= 1 && oy <= size_y && oy >= 1)
        I1(oy,ox,1)=Value;
        I1(oy,ox,2)=0;
        I1(oy,ox,3)=0;
    end
end
%%%以下画绿色的圆轮廓
theta = 0 : (1 / double(1000*r)) : (2 * pi);
line_x = int16(double(r) * cos(theta) + double(x));
line_y = int16(double(r) * sin(theta) + double(y));
for i=1:size(line_y,2)
	c_x=line_x(i);
	c_y=line_y(i);
	if (c_x <= size_x &&c_x >= 1 && c_y <= size_y && c_y >= 1)
         I1(c_y,c_x,1)=0;  
        I1(c_y,c_x,2)=Value;
        I1(c_y,c_x,3)=0;
    end
end
figure,imshow(I1)
figure;imshow(I1,'notruesize');
% hold on
% Im2=imread('D:\MATLAB7\work\111.jpg');%彩色图象类型
% I2=rgb2gray(Im2);
% imshow(I2,'notruesize');
% figure,imshow(I1,'InitialMagnification','fit');
%figure,imshow(I1,'InitialMagnification','fit');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -