通过调用Matlab函数完成以下内容
- 创建n×m大小的灰度图像与彩色图像;
- 结合subplot、imshow、imtool等函数显示灰度、彩色、伪彩色图像、HSV图像等图像不同显示类型;
- 提取图像上某两点(x1,y1)、(x2,y2)的8-邻域罗森菲尔德邻域并显示;
- 显示(x1,y1)与(x2,y2)两点间的图像像素变化情况;
程序代码如下:(整个程序为一个整体)
%% 内容1、2
I=imread('onion.png');
Ig=rgb2gray(I);
figure(1)
subplot(1,2,1);imshow(I),title('RGB')
subplot(1,2,2);imshow(Ig),title('Gray')
hsv=rgb2hsv(I);
wrgb=ind2rgb(gray2ind(Ig,255),jet(255));
figure(2)
subplot(1,2,1),imshow(wrgb),title('F-RGB')
subplot(1,2,2),imshow(hsv),title('HSV')
%% 内容3
figure(3)
im=imcrop(I,[40,80,70,70]);
image(im),axis on,colormap(gray(256)),title('截取的一小块图像');
row1=4;
col1=5;
im(row1,col1,:)=255;
im(row1-1,col1-1:col1+1,:)=155;
im(row1,col1-1,:)=155;
im(row1,col1+1,:)=155;
im(row1+1,col1-1:col1+1,:)=155;
row2=16;
col2=18;
im(row2,col2,:)=255;
im(row2-1,col2-1:col2+1,:)=155;
im(row2,col2-1,:)=155;
im(row2,col2+1,:)=155;
im(row2+1,col2-1:col2+1,:)=155;
figure(4)
image(im),axis on,grid on,colormap(gray(256)),title('两点的8-领域');
%% 内容4
a=80+row1;
b=40+col1;
a1=80+row2;
b1=40+col2;
figure(5),
improfile(I,[b,b1],[a,a1]),
ylabel('Pixel value'),
title('(x1,y1)到(x2,y2)的像素值变化情况')
程序代码原理如下:
- 使用函数imread从磁盘中读取RGB图像onion.png,然后使用函数rgb2gray将RGB图像转为灰度图像;
- 使用函数rgb2hsv处理RGB图像获得HSV图像,先使用函数gray2ind将灰度图像转换为索引图像,然后使用函数ind2rgb处理索引图像获得伪彩色图像,最后使用函数subplot将图像窗口分块,然后使用函数imshow在图像窗口中分别显示灰度、彩色、伪彩色和HSV图像;
- 使用函数imcrop截取图像中指定区域的一小块图像,然后在这一小块图像中选取两个像素点,通过罗森菲尔德邻域计算方法,对这两个像素点的8-邻域分别进行赋值以显示各像素点的8-邻域,然后通过函数image将修改过两点8-邻域像素值后的小块图像在图像窗口显示;
- 通过计算推导可以得出小块图像中的像素点(row,col)在原本RGB图像中的坐标为(y+row,x+col),x,y为截取小块图像时指定区域的左上角的坐标值,使用上述计算方法得出的两点的坐标,利用函数imprifile获得从(x1,y1)与(x2,y2)两点间的图像像素变化情况并在图像窗口显示;
程序运行结果如下:
1、读取RGB图像:
2、RGB图像转化:
3、截取的子图像与罗森菲尔德8邻域
4、像素值变化情况 :
感谢观看,如有做的不对的地方欢迎指出,大家一起交流学习!
此内容为原创,非允许不可转载