《数字图像处理原理与实践(MATLAB版)》一书之代码Part4

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part4,辑录该书第135至第183页之代码,供有需要读者下载研究使用。代码执行结果请参见原书配图,建议下载代码前阅读下文:

关于《数字图像处理原理与实践(MATLAB版)》一书代码发布的说明

http://blog.csdn.net/baimafujinji/article/details/40987807

P139

original = imread(‘snowflakes.png‘);
figure, imshow(original);
se = strel(‘disk‘,5);
afterOpening = imopen(original,se);
figure, imshow(afterOpening,[]);

P140

originalBW = imread(‘circles.png‘);
imshow(originalBW);
se = strel(‘disk‘,10);
closeBW = imclose(originalBW,se);
figure, imshow(closeBW)

P144

bw = imread(‘bw.bmp‘);
shape1 = [0 0 0 0 1
            0 0 0 1 1
            0 0 1 1 1
            0 1 1 1 1
            1 1 1 1 1];
shape2 = [1 1 0 0 0
            1 0 0 0 0
            0 0 0 0 0
            0 0 0 0 0
            0 0 0 0 0];
bw2 = bwhitmiss(bw, shape1, shape2);
imshow(bw2)

P146-1

I = imread(‘letter2.jpg‘);
I = im2bw(I);
I1 = bwmorph(I, ‘thin‘,inf);
figure(1), imshow(I1);

P146-2

I = imread(‘letter2.jpg‘);
I = im2bw(I);
I2 = bwmorph(I, ‘skel‘,inf);
figure(2), imshow(I2);

P153

I = imread(‘lena.jpg‘);
I = rgb2gray(I);
BW1 = edge(I, ‘roberts‘);
BW2 = edge(I, ‘sobel‘);
BW3 = edge(I, ‘prewitt‘);
figure
subplot(2,2,1),imshow(I),title(‘original‘)
subplot(2,2,2),imshow(BW1),title(‘roberts‘)
subplot(2,2,3),imshow(BW2),title(‘sobel‘)
subplot(2,2,4),imshow(BW3),title(‘prewitt‘)

P157

I = imread(‘einstein.bmp‘);
I = rgb2gray(I);
N = [1, 2, 1
     0, 0, 0
     -1,-2,-1];
edge_n = imfilter(I,N,‘symmetric‘,‘conv‘);
imwrite(edge_n, ‘edge_n.jpg‘);

P160

I = rgb2gray(imread(‘lena.jpg‘));
M = [1,1,1
        1,-8,1
        1,1,1];
img=imfilter(I,M);
[x,y]=size(I);
img2 = img;
for i = 2:x-1
        for j = 2:y-1
            a = [img(i,j+1),img(i,j-1),img(i+1,j+1),img(i+1,j-1), ...
                 img(i-1,j+1),img(i-1,j-1),img(i+1,j),img(i-1,j)];
            if ( (max(a)-min(a))>64 && max(a)>img(i,j) && min(a)<img(i,j))
                img2(i,j)=255;
            else
                img2(i,j)=0;
            end
        end
end

P165

I = imread(‘lena.jpg‘);
IMG = rgb2gray(I);
Edge_LoG = edge(IMG, ‘log‘);
imshow(Edge_LoG);
figure
subplot(1,2,1), imshow(IMG);
subplot(1,2,2), imshow(Edge_LoG);

P167

I = double(rgb2gray(imread(‘lena.jpg‘)));
figure, imshow(uint8(I))
DoG=fspecial(‘gaussian‘,5,0.8)-fspecial(‘gaussian‘,5,0.6);
ImageDoG=imfilter(I,DoG,‘symmetric‘,‘conv‘);
figure, imshow(ImageDoG)
% threshold = 2
proc_Img1 = ImageDoG;
proc_Img1(find(proc_Img1 < 2))=0;
figure, imshow(proc_Img1)
% threshold = 3
proc_Img2 = ImageDoG;
proc_Img2(find(proc_Img2 < 3))=0;
figure, imshow(proc_Img2)

P172

img = edge(I, ‘canny‘,[0.032,0.08], 3);

P183

RGB= imread(‘building.jpg‘);
I = rgb2gray(RGB);
BW = edge(I, ‘canny‘);

[H, T, R]=hough(BW, ‘RhoResolution‘,0.5,‘ThetaResolution‘,0.5);
figure, imshow(imadjust(mat2gray(H)), ‘XData‘, T, ...
‘YData‘, R, ‘InitialMagnification‘, ‘fit‘);
xlabel(‘\theta‘), ylabel(‘\rho‘);
axis on; axis normal; hold on;
colormap(hot);
peaks = houghpeaks(H, 15);
figure, imshow(BW);
hold on;
lines = houghlines(BW, T, R, peaks, ‘FillGap‘,25, ‘MinLength‘,15);

max_len = 0;
for k=1:length(lines)
xy = [lines(k).point1; lines(k).point2];
   plot(xy(:,1),xy(:,2),‘LineWidth‘,3,‘Color‘,‘b‘);
   plot(xy(1,1),xy(1,2),‘x‘,‘LineWidth‘,3,‘Color‘,‘yellow‘);
   plot(xy(2,1),xy(2,2),‘x‘,‘LineWidth‘,3,‘Color‘,‘red‘);

len = norm(lines(k).point1 - lines(k).point2);
   if ( len > max_len)
      max_len = len;
      xy_long = xy;
   end
end

(代码发布未完,请待后续...)

时间: 2024-12-19 23:52:41

《数字图像处理原理与实践(MATLAB版)》一书之代码Part4的相关文章

《数字图像处理原理与实践(MATLAB版)》一书之代码Part9

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part9,辑录该书第431至第438页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 首先给出的是原书P438所列之程序源

《数字图像处理原理与实践(MATLAB版)》一书之代码Part8

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part8,辑录该书第375至第415页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P385-1 function y

《数字图像处理原理与实践(MATLAB版)》一书之代码Part5

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part5,辑录该书第225至第280页之代码(此处应部分读者之需求调整了代码发布的顺序--详细说明请见下面的文章链接),供有需要读者下载研究使用.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P245 I = imread(

《数字图像处理原理与实践(MATLAB版)》一书之代码Part6

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有需要读者下载研究使用.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P338 i=double(imread('vase.tif'));[C,S]=wavedec2(i,2,

《数字图像处理原理与实践(MATLAB版)》一书之代码Part3

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part3(P81~135),代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明http://blog.csdn.net/baimafujinji/article/details/40987807 P92 i = imread('Hepburn.jpg');%注意w和h1这两个模板是等价的w = [1 1 1;1 1 1;1 1 1]/9;h1 =

《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part2(P43~80),代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P44 i = imread('theatre.jpg');i = rgb2gray(i);i = double(i); out1 = log(1+i)

数字图像处理原理与实践(MATLAB版)勘误表

本文系<数字图像处理原理与实践(MATLAB版)>一书的勘误表. [内容简单介绍]本书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及几何变换.灰度变换.图像增强.图像切割.图像去噪.小波变换.形态学处理.多尺度融合.偏微分方程应用.正交变换与图像压缩.边缘及轮廓检測.图像复原.图像去雾.多尺度空间构建与特征匹配等15大核心话题.全部算法均配有完整的MATLAB实现代码.并以此为基础具体介绍了MATLAB中与图像处理有关的近200个函数的用法,便于读者学习与实践.此外,本书还提供了丰富的

《数字图像处理原理与实践(MATLAB版)》一书之代码Part7

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part7(由于之前发布顺序调整,请读者注意页码标注而不要仅仅依据系列文章的标题编号),辑录该书第186至第225页之代码,供有需要读者下载研究使用.至此全书代码发布已经过半.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P1

《数字图像处理原理与实践(MATLAB版)》一书之代码Part1

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part1(P1~42).代码运行结果请參见原书配图. P20 I = imread('lena.jpg');BW1 = im2bw(I);BW2 = im2bw(I, 0.3);BW3 = im2bw(I, 0.6);figuresubplot(2,2,1),imshow(I);title('original');subplot(2,2,2),imshow(BW1);title('\default');subplot(2,2,