失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)

【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)

时间:2018-11-05 07:55:27

相关推荐

【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)

👨‍🎓个人主页:研学社的博客

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章讲解

💥1 概述

文献来源:

本文描述了一种小波编码图像的分割和分析算法

该算法构成了图像后处理方案的一部分,该方案可以成功地恢复遭受模糊伪影的压缩图像中的纹理。该算法包括提取纹理、强度(或颜色)和空间特征。kmeans算法的变体被用于有效地分割大图像。分析阶段使用基于规则的启发式方法将片段分类为可用于恢复它们的潜在伪影或相邻纹理。这种新颖的图像后处理方法需要最少的用户交互,并且可以成功地利用压缩图像中的纹理级别相关性。

📚2 运行结果

部分代码:

clear all; clc; clf; warning off; close all hidden;

totalt = 0; % Total time spent on segmentation.

% PRE-PROCESS the image to produce a feature set.

% 1. Texture processing using DOOG filters

% 2. Principle component analysis to reduce dimensionality

% 3. Random sampling of image

img = im2double(imread('4.bmp')); % Read gray image

%img = im2double(imread('girl.bmp')); % Read color image

disp('Preprocessing...');tic;

% Preprocess all

[allfeatures, rDims, cDims, depth] = preprocfast(img);

[samples,olddimensions] = size(allfeatures);

gallfeatures = allfeatures;

% Combine all texture features to use for later thresholding

% Also save all low pass features for later adjacency processing

if depth == 1

texturefeature = max(allfeatures(:,4:11), [], 2);

lowpassfeature = allfeatures(:,3);

lowpassimage = reshape(lowpassfeature, [cDims rDims])';

else

texturefeature = max(allfeatures(:,6:13), [], 2);

lowpassfeature = allfeatures(:,3:5);

lowpassimage(:,:,1) = reshape(lowpassfeature(:,1), [cDims rDims])';

lowpassimage(:,:,2) = reshape(lowpassfeature(:,2), [cDims rDims])';

lowpassimage(:,:,3) = reshape(lowpassfeature(:,3), [cDims rDims])';

end

textures = reshape(texturefeature, [cDims rDims])';

% Principle component based dimensionality reduction of all features

allfeatures = pca(allfeatures, 0.05);

% Choose 10% of samples randomly and save in DATASET

[samples, dimensions] = size(allfeatures);

% We work on ~WORKSAMPLES pixels. If the image has less we use all pixels.

% If not then the appropriate portion of pixels is randomly selected.

worksamples = samples/10;

if worksamples < 10000

worksamples = 10000;

end

if samples < worksamples

worksamples = samples;

end

choose = rand([samples 1]); choose = choose < (worksamples/samples);

dataset = zeros([sum(choose), dimensions]);

dataset(1:sum(choose),:) = allfeatures(find(choose),:); % find(choose) returns array where choose is non zero

disp('Preprocessing done.');t = toc; totalt = totalt + t;

disp([' Original dimensions: ' int2str(olddimensions)]);

disp([' Reduced dimensions by PCA: ' int2str(dimensions)]);

disp([' Image has ' int2str(rDims * cDims) ' pixels.']);

disp([' Using only ' int2str(size(dataset,1)) ' pixels.']);

disp(['Elapsed time: ' num2str(t)]);

disp(' ');

% SEGMENTATION

% 1. k-means (on sampled image)

% 2. Use centroids to classify remaining points

% 3. Classify spatially disconnected regions as separate regions

% Segmentation Step 1.

% k-means (on sampled image)

% Compute k-means on randomly sampled points

disp('Computing k-means...');tic;

% Set number of clusters heuristically.

k = round((rDims*cDims)/(100*100)); k = max(k,8); k = min(k,16);

% Uncomment this line when MATLAB k-means unavailable

%[centroids,esq,map] = kmeanlbg(dataset,k);

[map, centroids] = kmeans(dataset, k); % Calculate k-means (use MATLAB k-mean

disp('k-means done.');t = toc; totalt = totalt + t;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

如果觉得《【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。