Why I am getting this error message?
Show older comments
Error in adMedianfilter_2D (line 12)
d3x3 = window(r3, r3);
Error in adMedian (line 18)
[pixel_value, pixel_valid] = adMedianfilter_2D(c_data, c_idx); %function
Here's my code:
clc; % Clear command window
clear all; % Delete all variables
close all; % Close all figure windows
I = imread('mdb001.pgm'); %image read
J = imnoise(I,'salt & pepper',0.02); %add noise to image
smax = 3; %spatial co-variance for least neighbouring pixels
[r, c] = size(I); %dimensions of the image
ll = ceil(smax/2); %lower-left
ul = floor(smax/2); %upper-left
for i = 2:r-smax
for j =2:c-smax
c_idx = i;
c_data = double(I(j:j+smax-1, i));
[pixel_value, pixel_valid] = adMedianfilter_2D(c_data, c_idx); %function
if pixel_valid
J(j,i) = pixel_value;
end
end
end
subplot( 1, 2, 1 );
imshow( I, [ ] );
subplot( 1, 2, 2 );
imshow( J, [ ] );
%function adMedianfilter_2D
function [pixel_value, pixel_valid ] = adMedianfilter_2D( c_data, c_idx );
smax = 3;
persistent window; %window tool
if isempty(window)
window = zeros(smax, smax);
end
cp = ceil(smax/2); % center pixel;
w3 = -2:2;
r3 = cp + w3;
d3x3 = window(r3, r3);
center_pixel = window(cp, cp);
outbuf = get_median_2d(d3x3);
[min3, med3, max3] = getMinMaxMed_2d(outbuf);
pixel_val = get_new_pixel(min3, med3, max3, ...
center_pixel);
persistent datavalid
if isempty(datavalid)
datavalid = false;
end
pixel_valid = datavalid;
datavalid = (c_idx >= smax);
end
%get_median_2d
function outbuf = get_median_2d(inbuf)
outbuf = inbuf;
[nrows ncols] = size(inbuf);
for ii=coder.unroll(1:ncols)
colData = outbuf(:, ii)';
colDataOut = get_median_1d(colData)';
outbuf(:, ii) = colDataOut;
end
for ii=coder.unroll(1:nrows)
rowData = outbuf(ii, :);
rowDataOut = get_median_1d(rowData);
outbuf(ii, :) = rowDataOut;
end
end
3 Comments
KSSV
on 24 Feb 2022
You said you are getting error. But you have not specififed what error.
Pratiksha Joshi
on 24 Feb 2022
r3 starts from 0 which is not allowed as an index.
smax = 3;
cp = ceil(smax/2); % center pixel;
w3 = -2:2;
r3 = cp + w3
Accepted Answer
More Answers (0)
Categories
Find more on Neighborhood and Block Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!