我曾尝试在图像的ROI中应用Otsu's,以获得更好的输出。我当前的代码迭代如下所示,我将Otsu应用于图像的45x45 ROI段。输出仍然不是最好的,特别是与自适应阈值方法相比。我怎样才能得到更清晰和更好的输出呢?有没有推荐的在ROI中应用Otsu的其他方法?
def roiOtsu(image):
size = 45
column, row, result = properties(image)
for i in range(0, column,size):
for j in range (0, row,size):
所以我有一个很大的Numpy数组(2560x1920)。它实际上是从一张灰度图像中得到的,其中每个像素都有一个从0到1的数字,表示它的亮度。
我试图用零替换低于阈值的所有值,比如0.5。这可能是一个简单的任务,但我是一个新手,与Numpy,我已经搜索了,但仍然无法弄清楚。
这就是我尝试过的,我知道这是错误的.
for x in np.nditer(Image):
if x < .5:
x == 0
plt.imshow(Image, cmap=plt.cm.gray)
plt.show()
它只是输出正常的图像,而不改变任何东西。
此外,数组看起来类似于(显然是
我的图像有一个“光反射”,图像上的前两个零与图像的其余部分有一些不同的光。当我将它转换成二进制图像时,这部分变成了白色,我需要得到数字的确切轮廓,这会产生阻碍。现在我可以用OpenCV解决这个问题了?
原始图像
二进制版本
如果我增加阈值的值,我会丢失图像右侧的数字。我的代码:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main ( int argc, char **argv )
{
Mat im_g
我试着对一些图像进行二值化。在一些图像中,我得到了它的模式,但在一些图像中,我丢失了一些模式。我使用greythresh进行二进制化。有没有其他方法可以提高输出。
I = imread('image.jpg');
I = rgb2gray(I);
I = uint8(255*mat2gray(I));
figure,imshow(I);
I=imresize(I,[128 128]);
figure,imshow(I);
I = medfilt2(I,[5 5]);
I1 = medfilt2(I,[5 5]);
I = adapthisteq(I1,'cl
我有一张图片,如附图所示。有时,数字的黑色强度与它们的相邻像素没有太大的差别,我很难提取这些数字(例如,设置阈值是不有效的,因为黑色的亮度接近灰度的强度,因为反射或在图像捕获过程中不能很好地聚焦)。我喜欢在黑色和背景灰色之间做更多的区别,这样我就可以在没有太多噪声的情况下提取数字。我所做的是增加使用addWeighted函数与OpenCV函数之间的差异。color是原始的RGB图像。这对我的处理是否有意义,还是有更有效的方法?
Mat blur_img = new Mat(color.size(), color.type());
org.opencv.core.Size size = new