1 实验题目
各举一例编程实现图像的点运算、代数运算和几何运算。
2 程序源代码
2.1 点运算
clc;%clc 的作用就是清屏幕
clear;%clear 是删除所有的变量
close all;%close all 是将所有打开的图片关掉。
array=zeros(1,256);
I=imread('picture.jpg');%读取图像
J=I*0.36+200; %线性点运算
J=uint8(J);
subplot(1,2,1),
imshow(I);%输出原图像
subplot(1,2,2),
imshow(J);%输出点运算后的图像
2.2 代数运算
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
I=imread('photo.jpg');
I=rgb2gray(I);
K1=imadd(I,30); %加法
K2=immultiply(I,1.5);%乘法
K3=imdivide(I,2); %除法
K4=imcomplement(I); %求补运算
figure;
subplot(231),imshow(I),title('原图');
subplot(232),imshow(K1),title('加法');
subplot(233),imshow(K2),title('乘法');
subplot(234),imshow(K3),title('除法');
subplot(235),imshow(K4),title('求补');
2.3 几何运算
% 图像的平移
close
clc
clear
I=imread('photo.jpg'); %读取图片
a=100;b=100; % 设置平移坐标
se = translate(strel(1),[a,b]); %将一个平面结构化元素平移
J1=imdilate(I,se); %%利用形态学膨胀移动原图像
a=-100;b=100; % 再次设置平移坐标
se = translate(strel(1), [a b]);
J2=imdilate(I,se); %再次利用形态学膨胀移动原图像
a=100;b=-100; % 再次设置平移坐标
se = translate(strel(1), [a b]);
J3=imdilate(I,se); %再次利用形态学膨胀移动原图像
a=-100;b=-100; % 再次设置平移坐标
se = translate(strel(1), [a b]);
J4=imdilate(I,se); %再次利用形态学膨胀移动原图像
set(0,'defaultFigurePosition',[200,100,1000,500]); % 修改图形图像设置的默认设置
set(0,'defaultFigureColor',[1,1,1]); %修改图像背景颜色的设置
subplot(2,3,1),imshow(I);title('原图像');axis on;
subplot(2,3,2),imshow(J1);title('向右下平移');axis on;
subplot(2,3,3),imshow(J2);title('向右上平移');axis on;
subplot(2,3,4),imshow(J3);title('向左下平移');axis on;
subplot(2,3,5),imshow(J4);title('向左上平移');axis on;
3 图像相减
工业应用中常用图像相减来检测缺失的零部件。方法是存储正确组装产品的 - -幅“黄金”图像,然后从相同产品的传人图像中减去该图像。理想情况下,如果新产品组装正确,那么两幅图像的差为零。而在缺失零部件的产品的图像与“黄金” 图像的差值图像中,差值不为零。这一方法要在实际工作中发挥作用,必须要满足的条件是什么?具体过程如何?
答:需要满足的条件有:相机与元件应对齐,确保每幅图像的元件位置一样;相机、 最好是统一型号的相机和相同的配置下成像,流水线上要考虑成像相机停留的时间; 需要一个稳定的光源,光强变化尽可能小,同时保证成像的视场要一致,照明方式相 同,光照合适且均匀;差分图像的噪声内容需要足够低,确保它不会对“金”图像和 输入信息之间的比较产生实质性影响;背景台应稳定,减少因设备运转的震动。
具体过程:首先获取原始图像和参考图像,然后进行图像预处理,接着图像相减,之后做阈值分割,然后进行区域检测,区域检测后再进行缺失零部件检测,最后输出结果。
图像处理基础操作详解
2007

被折叠的 条评论
为什么被折叠?



