出错 imhist (第 74 行) [a, n, isScaled, top, map] = parse_inputs(varargin{:});
时间: 2024-03-19 17:41:46 浏览: 34
这个错误是因为 MATLAB 中的 `imhist` 函数所需的输入参数不正确。请检查你调用 `imhist` 函数时传递的参数是否正确,确保它们符合函数的要求。你也可以查看 MATLAB 的文档以了解 `imhist` 函数的正确用法,并相应地修改你的代码。如果你需要更详细的帮助,请提供更多的上下文和代码细节。
相关问题
img = imread('1.png'); img_gray = rgb2gray(img); % 指定窗口大小和步长 window_size = 15; step_size = 5; % 计算图像的局部直方图 [rows, cols] = size(img_gray); hist_local = zeros(rows, cols, 256); for i = 1:step_size:rows-window_size+1 for j = 1:step_size:cols-window_size+1 % 提取当前窗口内的像素值 window = img_gray(i:i+window_size-1, j:j+window_size-1); % 计算当前窗口内的直方图 hist_window = imhist(window, 256); % 将当前窗口内的直方图扩展为与窗口大小相同的矩阵 hist_window = kron(ones(window_size, window_size), hist_window); % 将当前窗口内的直方图保存到局部直方图中 hist_local(i:i+window_size-1, j:j+window_size-1, :) = hist_window; end end % 检查是否存在没有被赋值的位置 if any(hist_local(:) == 0) % 将没有被赋值的位置赋值为1 hist_local(hist_local == 0) = 1; end % 显示原始图像和局部直方图 figure; subplot(1,2,1), imshow(img_gray), title('原始图像'); subplot(1,2,2), imshow(histeq(hist_local)), title('局部直方图'); 无法执行赋值,因为左侧的大小为 15×15×256,右侧的大小为 3840×15。 解决办法
出现错误的原因是在将当前窗口内的直方图扩展为与窗口大小相同的矩阵时,使用了kron函数,但是kron函数的使用不正确。应该将直方图矩阵的行和列都扩展为与窗口大小相同,而不是只扩展行或列。可以使用repmat函数来实现行和列的扩展。
修改后的代码如下:
```
img = imread('1.png');
img_gray = rgb2gray(img);
window_size = 15;
step_size = 5;
[rows, cols] = size(img_gray);
hist_local = zeros(rows, cols, 256);
for i = 1:step_size:rows-window_size+1
for j = 1:step_size:cols-window_size+1
window = img_gray(i:i+window_size-1, j:j+window_size-1);
hist_window = imhist(window, 256);
hist_window = repmat(hist_window, [window_size, window_size]);
hist_local(i:i+window_size-1, j:j+window_size-1, :) = hist_window;
end
end
if any(hist_local(:) == 0)
hist_local(hist_local == 0) = 1;
end
figure;
subplot(1,2,1), imshow(img_gray), title('原始图像');
subplot(1,2,2), imshow(histeq(hist_local)), title('局部直方图');
```
在修改后的代码中,使用了repmat函数将直方图矩阵的行和列都扩展为与窗口大小相同,然后将扩展后的直方图保存到局部直方图中。
根据“对于此运算,数组大小不兼容”这句话,改善这个代码。% 读入图像 img = imread('D:\tupian\zuoye31.jpg'); % 将图像转换为灰度图像 gray_img = rgb2gray(img); % 计算灰度图像的直方图 histogram = imhist(gray_img); % 计算图像像素总数 total_pixels = numel(gray_img); % 初始化变量 max_var = 0; threshold = 0; % 遍历灰度级别,计算类间方差 for i = 1:256 % 计算背景像素数量 bg_pixels = sum(histogram(1:i)); % 计算前景像素数量 fg_pixels = total_pixels - bg_pixels; % 计算背景平均灰度值 bg_mean = sum((0:i-1) .* histogram(1:i)) / bg_pixels; % 计算前景平均灰度值 fg_mean = sum((i:255) .* histogram(i+1:end)) / fg_pixels; % 计算类间方差 var_between = bg_pixels * fg_pixels * power(bg_mean - fg_mean,2); % 更新阈值和最大类间方差 if var_between > max_var max_var = var_between; threshold = i - 1; end end % 用OTSU算法得到的阈值对图像进行二值化处理 binary_img = imbinarize(gray_img, threshold/255); % 显示原图和二值化后的图像 subplot(1, 2, 1), imshow(gray_img), title('原图'); subplot(1, 2, 2), imshow(binary_img), title('二值化后的图像');
<form action="/delete" method="post">
<h2>删除数据:</h2>
<label>ID:</label>
<input type="text" name="id"><br>
<input type="submit" value="提交">
</form>
<根据“对于此运算,数组大小不兼容”这句话,可以尝试修改以下代码:
```
%form action="/search" method="post">
<h2>查询数据:</h2>
<label>ID:</label>
< 计算灰度图像的直方图
histogram = imhist(gray_img);
% 将直方图转为一维数组input type="text" name="id"><br>
<input type="submit" value="提交">
</form>
<form
histogram = histogram(:);
```
这样可以将灰度图像的直方图从二维数组转换为一维数组,解决“数组大小不兼容”的问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)